如何生成一个[0,5,10,15]集之一的随机数?

时间:2013-06-22 05:42:42

标签: c#

我一直在使用以下内容:

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

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

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

有没有办法可以修改它只是为了选择上面的数字?

7 个答案:

答案 0 :(得分:6)

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)];

答案 1 :(得分:4)

Random rnd = new Random();

//create a pre-defined list
int[] nums = new int[] {0, 5, 10, 15};

int rndNum = nums[rnd.Next(nums.Length)];

您甚至可以重复循环,从阵列中的预定义数字集生成多个随机数。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

像这样(伪代码):

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

或者它是否真的像5的倍数一样简单;简单地乘以它:

return new Random().Next(4) * 5;

答案 4 :(得分:0)

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)];

答案 5 :(得分:0)

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.

答案 6 :(得分:0)

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