我想从一个范围之间获得pascal中的随机数。基本上是这样的:
r = random(100,200);
上面的代码将有一个介于100和200之间的随机数。
有什么想法吗?
内置的pascal函数只允许你从0到你的范围之间得到一个数字,而我需要指定要返回的最小数字
答案 0 :(得分:9)
只需获得一个具有正确范围的随机数(即100到200将是100),然后将起始值添加到其中
所以:random(100) + 100
为你的例子
答案 1 :(得分:3)
正如已经指出的那样,你应该使用
myrandomnumber := random(span) + basenumber;
但是,要获得质量更好的随机数,您应该致电
randomize();
在应用程序启动时,初始化随机数生成器。
答案 2 :(得分:2)
难道你不能只声明一个起始变量和一个结束变量并随机传递那些变量吗? e.g。
var
varMyRandomNumber, x, y := extended;
begin
x := 100;
y := 200;
varMyRandomNumber := random(x,y);
ShowMessage(IntToStr(varMyRandomNumber));
end;
?
这里有一个很好的例子,可以使用for循环来设置起始值和结束值:http://www.freepascal.org/docs-html/rtl/system/random.html
答案 3 :(得分:-1)
首先,我建议你在程序开头使用Randomize(它会改变选择数字的算法)。
要获得两个数字之间的随机数,您需要这样:
Result:=Min+random(10000)mod max + 1;
我不记得随机的最大值,所以你可以改变它(它不会改变任何东西)。
通过使用'mod',您可以从分区Random和max获得模块。需要+1,因为你永远不会得到= max的数字,只有= max-1的数字,所以你需要写+1。
祝你好运!答案 4 :(得分:-1)
你可以做到这一点 INT:=随机(100); 它给出了100个随机数。 然后当你显示或使用它时,只需将101添加到该整数,使其介于100和200之间