如果我有一個包含一些值的數組。如何每次獲得不同的隨機數 - 代表索引 - 從數組中獲取不同的值?如何在C#中每次選擇不同的隨機數
回答
生成您需要的範圍序列,並隨機排序。然後,將這些值放入堆棧並從堆棧中選擇。例如:
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();
爲什麼你重新打開這個問題(之前已被封閉作爲重複),只是發佈一個答案,提出[一個次優解決方案](https ://stackoverflow.com/questions/1287567/is-using-random-and-orderby-a-good-shuffle-algorithm)?這看起來有點像濫用我的金牌標誌特權。你能解釋爲什麼你不同意這個問題是[this one](https://stackoverflow.com/questions/9592166/unique-number-in-random)和[this one](https:// stackoverflow。 COM /問題/ 26931528 /隨機數發生器與 - 無重複)? –
@CodyGray是的,你說的沒錯,我想我有點急於重新打開這個問題。我雖然在重複問題中的頂部答案只是洗牌數組,但它也填補了它。所以是的,與我的答案唯一的區別僅僅是我也顯示了一個簡單的方法來使用堆棧選擇值。 – Magnus
很酷。感謝回覆。我在這裏得到了一些關於可疑行爲的標誌,並且想要給你一個提醒。在未來,它可能會更好地具體提到你的答案是增加了,而不是被提出的副本中的答案覆蓋(就像我們要求提問者在他們的問題中澄清他們是否抗議重複封閉)。 –
- 1. 隨機隨機洗牌C++數組(每次不同)
- 2. 如何在C++中一次生成不同的隨機數?
- 3. 如何使隨機值函數每次返回不同的值
- 4. 無需在JavaScript中選擇兩次的隨機數組選擇
- 5. 每次獲得不同的隨機值
- 6. 每次產生相同的隨機數
- 7. 每次在迭代中從int數組中挑選不同的隨機元素?
- 8. iPhone:隨機()函數每次給我相同的隨機數
- 9. 每次/每天隨機數
- 10. 如何隨機選擇一個字符,每次它需要
- 11. C# - 如何從數據表中選擇不同的隨機記錄
- 12. 每次隨機選擇div的div而不是div
- 13. 每個div中的不同隨機數
- 14. C++每次產生隨機數
- 15. 如何獲得不同的隨機數在C++中每個類的初始化
- 16. 不同概率的隨機行選擇
- 17. PHP - 如何從表中選擇隨機但不同的行
- 18. 隨機選擇3行相同的次數
- 19. 在C++中選擇隨機子類
- 20. 如何從一組隨機數中進行隨機選擇?
- 21. 如何從2個不同的數字範圍中選擇1個隨機數?
- 22. uwp c#隨機選擇
- 23. 從數組中選擇3個不同的隨機值
- 24. 如何在每次執行SQL查詢時選擇隨機唯一記錄
- 25. 如何在MySQL中每行選擇兩次相同的UUID值?
- 26. 生成 「隨機」 數是相同的javascript每次(即種子隨機數)
- 27. 如何在同一個程序/函數中每次生成不同的隨機數字集?
- 28. 如何創建一個每次都返回不同值的隨機函數?
- 29. 每次在javascript循環上隨機數
- 30. 如何選擇隨機數據庫ID?
您是否嘗試從可用位置列表中刪除所選結果,然後從其餘位置隨機選取? – phuzi
不要「生成」隨機數字。收集所有可能的數字並洗牌。然後枚舉混洗的數字。 - 'foreach(int randomIndex in Enumerable.Range(0,5).OrderBy(rnd.Next())){[...]}'可能是一個開始。 – Corak
@phuzi:我不能,因爲我需要在不同的方法這個數組 – Rose