Как создать серию от 1000 до 9999 с использованием красного языка - PullRequest
0 голосов
/ 19 января 2019

Используя Красный язык , я хочу выбрать случайное число от 1000 до 9999. Посмотрев документы на random Я бы хотел, чтобы random выбрал число изсерия от 1000 до 9999.

Я знаю, что могу сделать 999 + (random 9000), но, по моему мнению, это плохо читается.

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Существует хорошо зарекомендовавший себя способ вычисления случайного числа между двумя включающими границами:

(random(0,1)  * (max - min + 1)) + min

Перенос его на красный должен быть простым, а преобразование его в специальную функцию уменьшит «читаемость»беспокойство.Например:

>> between: func [lower upper][-1 + lower + random upper - lower + 1]
== func [lower upper][-1 + lower + random upper - lower + 1]
>> round average collect [loop 1'000'000 [keep between -10 10]]
== 0.0

-1 выше компенсирует тот факт, что диапазон random начинается с 1, а не 0.

Пока-ярмо between будетубедитесь, что нижняя граница действительно ниже , чем верхняя граница, выбрав минимальные / максимальные значения из двух данных границ.Я оставляю это как упражнение для читателя.

Другой подход, при котором вы буквально выбираете случайное число из ряда, будет:

>> thru: make op! func [lower upper][collect [until [keep lower greater? lower: lower + 1 upper]]]
== make op! [[lower upper]]
>> -10 thru 10
== [-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10]
>> random/only -10 thru 10
== 5
0 голосов
/ 19 января 2019

Вы можете определить свою собственную функцию, например,

random2: function [a b] [a - 1 + random b - a + 1]

затем random2 1000 9999

...