Red 如何使用红色语言创建从1000到9999的系列

Red 如何使用红色语言创建从1000到9999的系列,red,Red,使用,我想选择一个从1000到9999的随机数。在查看了文档之后,我想让random从1000到9999的系列中选择一个数字 我知道我可以做999+随机9000,但在我看来读起来不太好。你可以定义自己的函数,例如 随机2:函数[AB][a-1+随机b-a+1] 然后random2 1000 9999您可以定义自己的函数,例如 随机2:函数[AB][a-1+随机b-a+1] 然后random2 1000 9999有一种成熟的方法来计算两个包含边界之间的随机数: (random(0,1) * (m

使用,我想选择一个从1000到9999的随机数。在查看了文档之后,我想让random从1000到9999的系列中选择一个数字


我知道我可以做999+随机9000,但在我看来读起来不太好。

你可以定义自己的函数,例如

随机2:函数[AB][a-1+随机b-a+1]


然后random2 1000 9999

您可以定义自己的函数,例如

随机2:函数[AB][a-1+随机b-a+1]


然后random2 1000 9999

有一种成熟的方法来计算两个包含边界之间的随机数:

(random(0,1)  * (max - min + 1)) + min
将其移植到Red应该很简单,将其封装到专用函数中可以减轻可读性问题。例如:

>> 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补偿了随机范围从1开始,而不是从0开始的事实

通过从两个给定边界中选取最小/最大值,两个边界之间的poka轭将确保下限确实低于上限。我将此作为练习留给读者

另一种方法是从序列中随机选取一个数字:

>> 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

有一种成熟的方法可以计算两个包含边界之间的随机数:

(random(0,1)  * (max - min + 1)) + min
将其移植到Red应该很简单,将其封装到专用函数中可以减轻可读性问题。例如:

>> 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补偿了随机范围从1开始,而不是从0开始的事实

通过从两个给定边界中选取最小/最大值,两个边界之间的poka轭将确保下限确实低于上限。我将此作为练习留给读者

另一种方法是从序列中随机选取一个数字:

>> 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