2011-10-27 149 views
8

这是在德尔福(准确地说是7)。如何在特定范围内生成随机数字?类似于Python中的random.randint(1,6)。我试图模拟滚动的骰子。另一种选择是莫名其妙地排除0在一个范围内的随机数

目前我有:

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

“不知何故”排除零是微不足道的。只要做'随机(6)+ 1'。 –

回答

22

您可以使用

RandomRange(1, 7) 

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

uses Math

[顺便说一句,它是微不足道的 '以某种方式' 排除零。只是做Random(6) + 1]

+0

谢谢,但它必须是RandomRange(1,7),以便包含6。 – Aaron

+0

@Aaron:是的,几分钟前我改变了! –

2

而且,有可能产生从浮法范围[A,B),exluding b提取一个值:

​​

第一行产生从[0的值; 1)间隔;第二个从[a,b)给出一个值。

如果您想要在区间[a; B](例如,从区间[1 5个随机值; 2]:{1,1.25,1.5,1.75,2})使用下面的:

r := RandomRange(0, N-1); 
x := a + r*(b-a)/(N-1); 
+0

它应该是'RandomRange(0,N)' –

1

为特定的值则可以使用

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

该值将随机在1到6之间