C# 如何在C中每次选择不同的随机数#
如果我有一个包含一些值的数组。如何每次获取不同的随机数(表示索引),从数组中获取不同的值?生成所需范围的序列,并随机排序。然后,将值放入堆栈中,并从该堆栈中拾取。例如:C# 如何在C中每次选择不同的随机数#,c#,arrays,multidimensional-array,random,C#,Arrays,Multidimensional Array,Random,如果我有一个包含一些值的数组。如何每次获取不同的随机数(表示索引),从数组中获取不同的值?生成所需范围的序列,并随机排序。然后,将值放入堆栈中,并从该堆栈中拾取。例如: var rnd = new Random(); var randomValues = new Stack<int>(Enumerable.Range(0,5).OrderBy(x => rnd.Next())); var randomIndex1 = randomValues.Pop(); var random
var rnd = new Random();
var randomValues = new Stack<int>(Enumerable.Range(0,5).OrderBy(x => rnd.Next()));
var randomIndex1 = randomValues.Pop();
var randomIndex2 = randomValues.Pop();
var rnd=new Random();
var randomValues=新堆栈(Enumerable.Range(0,5).OrderBy(x=>rnd.Next());
var randomIndex1=randomValues.Pop();
var randomIndex2=randomValues.Pop();
您是否尝试过从可用位置列表中删除所选结果,然后从其余位置进行随机化?不要“生成”随机数。收集所有可能的数字并洗牌。然后数一数经过洗牌的数字foreach(int randomIndex in Enumerable.Range(0,5).OrderBy(rnd.Next()){[…]}
可能是一个开始。@phuzi:我不能,因为我需要不同的方法来使用这个数组。为什么你重新打开这个问题(以前作为重复项关闭),只是为了发布一个建议的答案?在我看来,这有点像是滥用你的金牌徽章特权。你能解释一下为什么你不同意这个问题是和的重复吗?@CodyGray是的,你是对的,我想我有点太快了,重新开始这个问题。我认为重复问题中的第一个答案只是改变了数组,但它也填充了数组。所以,是的,我的答案唯一的区别就是我还展示了一种简单的方法,可以使用stack.Cool选择值。谢谢你的回复。我刚刚收到了一些关于可疑行为的消息,我想提醒你一下。在未来,可能更好的做法是明确提及你的答案中添加了哪些内容,而这些内容并未包含在建议的副本中(就像我们要求提问者在他们抗议重复关闭时在他们的问题中澄清的那样)。