ユーザーは数字を10個のテキストボックスに入力し、それらを配列に送りました。今私はこの配列から乱数を生成したいと思います。私に何ができる?cで数字を与えることから乱数を生成する#
答えて
何か:
public class Randomizer<T>
{
private readonly Random _random = new Random();
private readonly IList<T> _numbers;
public Randomizer(IList<T> numbers)
{
_numbers = numbers;
}
public T Next()
{
int idx = _random.Next(0, _numbers.Count);
return _numbers[idx];
}
}
使用法:
var r = new Randomizer<int>(new int[] { 10, 20, 30, 40, 50 });
for (int i = 0; i < 100; i++)
Console.Write(r.Next() + " ");
それともshuffle the arrayにしたいですか?
[編集]
配列をシャッフルするには、this postに示すFisher–Yates shuffleを使用することができます。
// https://stackoverflow.com/questions/108819/110570#110570
public class Shuffler
{
private Random rnd = new Random();
public void Shuffle<T>(IList<T> array)
{
int n = array.Count;
while (n > 1)
{
int k = rnd.Next(n);
n--;
T temp = array[n];
array[n] = array[k];
array[k] = temp;
}
}
}
あなたは、インターフェイスが上記Randomizer
クラスと同じようにしたい場合は、することができますクラスを使用するように変更してください。
public class Randomizer<T>
{
private readonly Shuffler _shuffler = new Shuffler();
private readonly IList<T> _numbers;
public Randomizer(IList<T> numbers)
{
_numbers = new List<T>(numbers);
_shuffler.Shuffle(_numbers);
}
volatile int idx = 0;
public T Next()
{
if (idx >= _numbers.Count)
{
_shuffler.Shuffle(_numbers);
idx = 0;
}
return _numbers[idx++];
}
}
コードはで、スレッドセーフではないであるため、Next
メソッドを複数のスレッドから同時に呼び出すことができる場合は、いくつかのロックを実装する必要があります。
ok、それは動作しますが、私は、randomizerが繰り返さないために配列から生成するnumberをキックしたいと思います。 – MAB
@ActuallyMAB:あなたは配列をシャッフルすることについて話しています([SOの答えへのリンクは私の記事の最後です](http://stackoverflow.com/questions/108819/best-way-to-randomize-a- string-array-in-c))。すべての配列番号がなくなったときに何が起こるべきかを明確にすることができますか?再編して再開すべきか?または例外をスローしますか? – Groo
私は実際には数字を繰り返さないことを望みます。たとえば、結果は次のようになります。5-9-5-12。 – MAB
Seed標準System.Randomクラスからの値を持つクラス?すべての配列項目に依存する乱数が必要な場合は、それらをすべてXORします。このような
public static Random BuildSeededRandom(int[] data)
{
if (data == null || data.Length < 1)
return new Random();
int xor = 0;
foreach (var i in data)
xor ^= i;
return new Random(xor);
}
- 1. 与えられた数字のリストからJavaで乱数を生成する方法
- 2. 乱数を与える文字列に対するObjective-cの整数?
- 3. カスタムディストリビューションから乱数を生成する
- 4. Tensorflow変数として与えられた範囲で乱数を生成する方法
- 5. C# - フィールドに乱数を生成する
- 6. 乱数を生成するC++ +1
- 7. C#乱数int - 謎を生成する
- 8. 数値の確率を与えられた範囲内で乱数を生成する方法
- 9. 数字の1つではなく、リストから乱数を生成する
- 10. Cauchyから乱数生成
- 11. 乱数onclickを生成し、生成された数値を数えますか?
- 12. Cネストされた関数で乱数を生成する
- 13. C++はループなしで複数の乱数を生成する
- 14. C++関数で乱数を生成する
- 15. Cで-nからnまで乱数を生成
- 16. C/C++プリプロセッサで一連の乱数を生成する方法
- 17. Pythonで与えられた間隔と平均を持つ乱数ジェネレータがC#
- 18. C++乱数生成とPythonの違い
- 19. 数字のベクトルからの乱数生成
- 20. 短い乱数から長い乱数を生成する方法は?
- 21. 与えられた範囲でN個の乱数を生成し、合計の合計を計算する
- 22. 与えられた分布で文字を生成する
- 23. Haskellで乱数を生成する
- 24. GKRandomSourceで乱数を生成する
- 25. jinja2で乱数を生成する
- 26. PHPで乱数を生成する
- 27. 確率で乱数を生成する
- 28. C++ 1から10^6までの乱数を生成するには?
- 29. Cで設定した間隔で乱数を生成する
- 30. C#でクラスのコンストラクタで乱数を生成する方法
アレイから乱数を選択しますか?または乱数ジェネレータの「シード」として配列を使用しますか? –
私は種を入れたいです。 – MAB
それから私の答えを見てください(問題を解決すればそれを受け入れてください)。 –