【问题标题】:Random numbers in a range范围内的随机数
【发布时间】:2011-12-16 16:12:30
【问题描述】:

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

目前我有:

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

【问题讨论】:

  • “以某种方式”排除零是微不足道的。只需Random(6) + 1

标签: delphi random numbers range


【解决方案1】:

到您可能使用的特定值

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

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

【讨论】:

    【解决方案2】:

    此外,可以从浮点范围 [a, b) 中生成一个值,不包括 b:

    r := random;
    x := (b-a)*r + a;
    

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

    如果要在区间 [a; 内获取 N 个随机值b](例如,区间 [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)
    【解决方案3】:

    你可以使用

    RandomRange(1, 7)
    

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

    (uses Math)

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

    【讨论】:

    • 谢谢,但它必须是 RandomRange(1,7) 才能包含 6。
    • @Aaron:是的,我在几分钟前就改过了!
    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 2021-02-10
    • 2019-08-31
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多