我有一个方法接受一个整数数组作为参数,我只是随意改变其值的顺序
public static int[] _game_number = new int[4];
public static int[] _current_number = new int[4];
public static void GetRandomTwentyFour()
{
HashSet<int> nums = new HashSet<int>();
for (int i = 0; i < 4; i++)
{
Random r = new Random();
nums.Add(r.Next(0, 4));
}
List<int> liste = nums.ToList<int>();
_current_number = new int[] { _game_number[liste[0]], _game_number[liste[1]], _game_number[liste[2]], _game_number[liste[3]] };
}
问题在于nums
的元素数并不总是四个。
如果要随机重新排序,只需将带有随机事物的OrderBy用作选择器。
通常您可以使用Random.Next()
public static int[] _game_number = new int[4];
public static int[] _current_number = new int[4];
private static Random random = new Random();
public static void GetRandomTwentyFour()
{
_current_number = _game_number.OrderBy(r => random.Next()).ToArray();
}
但是,新的方法Guid
也可以在这里使用²,并为您节省一个私人领域:
public static int[] _game_number = new int[4];
public static int[] _current_number = new int[4];
public static void GetRandomTwentyFour()
{
_current_number = _game_number.OrderBy(g => new Guid()).ToArray();
}
²请注意,向导并不是“随机的”,而是“唯一的”。但是,由于您可能没有进行过正式的申请(银行,在线扑克等),因此使用IMO是合理的。对于随机性非常重要的应用程序,来自加密名称空间的RandomNumberGenerator会是更好的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句