在范围内生成随机数

8

这是在Delphi中(确切地说是7版本)。如何在特定范围内生成随机数?类似于Python中的random.randint(1,6)。我正在尝试模拟掷骰子。另一个选择是以某种方式排除0。

目前我有:

Randomize;
Roll := Random(7);
Label3.Caption := IntToStr(Roll);

5
排除零似乎很简单,只需执行 Random(6) + 1 即可。 - Andreas Rejbrand
3个回答

23

你可以使用

RandomRange(1, 7)

该函数将从集合 {1, 2, 3, 4, 5, 6} 中返回一个随机整数。

(使用 Math 库)

[顺便提一下,要排除零非常简单。只需执行 Random(6) + 1 即可。]


谢谢,但必须是RandomRange(1,7),这样6就包括在内了。 - Aaron
1
@Aaron:是的,我几分钟前就改过了! - Andreas Rejbrand

2
此外,也可以从浮点数范围 [a, b) 内生成一个值,但不包括 b:
r := random;
x := (b-a)*r + a;

第一行生成一个[0,1)区间内的值;第二行生成一个[a,b)区间内的值。
如果您想在区间[a,b]内获取N个随机值(例如,从区间[1,2]中获取5个随机值:{1、1.25、1.5、1.75、2}),请使用以下方法:
r := RandomRange(0, N-1);
x := a + r*(b-a)/(N-1);

应该是 RandomRange(0, N) - David Heffernan

1
要将值设置为特定值,可以使用:

randomize;
ran:=random(6)+1;

该值将在1到6之间随机化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接