我如何生成一个随机数,它是集合[0,5,10,15]中的一个

本文关键字:一个 何生成 随机数 集合 | 更新日期: 2023-09-27 18:19:32

我一直在使用以下内容:

Random r = new Random(); 
var a = r.Next(9)

生成0-9之间的随机数。

然而,现在我需要随机生成以下数字之一:0,5,10,15

有没有一种方法可以让我修改它来选择上面的数字?

我如何生成一个随机数,它是集合[0,5,10,15]中的一个

Random r = new Random(); 
var a = r.Next(4) * 5;

会成功的。请注意,该参数是独占的上界,因此永远不会生成它。您的代码示例生成的值介于0和8之间。

如果你需要一组不同的数字,你可以做以下操作:

int[] possible = new int[] { 0, 5, 10, 15 };
Random r = new Random(); 
int a = possible[r.Next(possible.length)];
Random rnd = new Random();
//create a pre-defined list
int[] nums = new int[] {0, 5, 10, 15};
int rndNum = nums[rnd.Next(nums.Length)];

您甚至可以重复循环,从数组中每个定义的数字集中生成一个以上的随机数。

是。把这四个数字放入一个由四个元素组成的数组中。然后生成0-3之间的随机数,并用它来索引数组

生成一个0到3之间的随机数,然后简单地将其用作数组的索引:

类似这样的东西(伪代码):

var nums = [0, 5, 10, 15];
return nums[new Random().Next(4)];

或者,如果它真的像5的倍数那么简单;简单相乘:

return new Random().Next(4) * 5;
const int iterator = 5;
const int upperBound = 15;
var possibleValues = (from n in Enumerable.Range(0, upperBound + 1)
                      where n % iterator == 0
                      select n).ToArray(); 
Random r = new Random();
var a = possibleValues[r.Next(possibleValues.Length)];
public static IEnumerable<int> Range(int count, int start = 0, int step = 1)
{
    for (int i = start; i < count; i++)
        yield return i;
}
var arr = Range(4, 0, 5).ToArray(); // 0, 5, 10, 15.
  Random r = new Random();
  var a = r.Next(4)*5;