【问题标题】:Random Range orders随机范围订单
【发布时间】:2018-09-21 01:00:48
【问题描述】:

我想做一个特别的随机。

private Randomizer getNumberRnd;
getNumberRnd = new Randomizer(1, 10, true);
    firstNumber = getNumberRnd.getRandom();

我想得到 6 个随机数来接近。

例如:7,6,5,8,9,5

正如我从 1 到 10 看到的那样,我如何让这些数字随机且接近?

【问题讨论】:

  • 您希望数字接近,但来自“大”间隔。我不明白你的问题,确切地说。
  • 是的,我认为解释得很清楚。我想要这个区间的 6 个数字,但很接近
  • 不,不清楚。如果目标是这样,从这个区间中选择一个数字,让它成为“a”;然后,从 a-2 到 a+2 中选择 5 个其他数字,或者使用新的 rand 选择任何偏移量。

标签: c# unity3d random


【解决方案1】:

假设您希望您的数字不超过 +- 2 并且接近 12。您可以这样做

int randomOffset = Random.Range(-2, 3); // For ints, the upper value is exclusive
int value = 12 + randomOffset;

这会给你一个范围内的值

10、11、12、13、14

现在,如果您不希望它在 12 左右,而是在一个随机值左右并将它们保持在 1 到 10 之间

int randomPivot = Random.Range(3, 9);
int randomOffset = Random.Range(-2, 3); // For ints, the upper value is exclusive
int value = randomPivot + randomOffset;

现在,您需要 6 个围绕枢轴的值,所以我们这样做

int[] randomValues = new int[6];
int randomPivot = Random.Range(3, 9);
for(int i = 0; i<6; ++i)
{
    int randomOffset = Random.Range(-2, 3);
    randomValues[i] = randomPivot + randomOffset;
}

现在random values 包含 6 个随机值,但彼此接近,都在 1 到 10 之间

【讨论】:

  • randomValues[i] = randomPivot + randomOffset;这是一个错误
  • 糟糕,我编辑了答案。它是 for 循环中的一种类型。
猜你喜欢
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 2011-12-16
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多