0

私は以下を使用しています:

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

0 ~ 9 の乱数を生成します。

ただし、次の数字のいずれかをランダムに生成する必要があります: 0,5,10,15

上記の数字を選択するためだけにこれを変更する方法はありますか?

4

7 に答える 7

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)];
于 2013-06-22T05:44:37.187 に答える
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)];

ループを繰り返して、配列内の定義された数値のセットから複数の乱数を生成することもできます。

于 2013-06-22T05:44:53.937 に答える
1

0 から 3 の間の乱数を生成し、それを配列のインデックスとして使用します。

このようなもの(疑似コード):

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

または、それが本当に 5 の倍数のように単純な場合。単純に掛けます:

return new Random().Next(4) * 5;
于 2013-06-22T05:49:02.297 に答える
1

はい。4 つの数値を 4 つの要素の配列に入れます。次に、0〜3の乱数を生成し、それを使用して配列にインデックスを付けます

于 2013-06-22T05:44:31.513 に答える
0
  Random r = new Random();
  var a = r.Next(4)*5;
于 2013-06-22T08:33:33.503 に答える
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)];
于 2013-06-22T05:45:19.967 に答える
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.
于 2013-06-22T06:42:31.570 に答える