我一直在使用以下内容:
Random r = new Random();
var a = r.Next(9)
生成0-9之间的随机数。
但是现在我需要随机生成以下数字之一:0,5,10,15
有没有办法可以修改它只是为了选择上面的数字?
答案 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;