仅使用 rand(start,end) 6 次从 50 个元胞数组中选择 6 个不同的元胞

标签 c random

我试图想出一种算法,从包含 50 个单元格的数组中随机选择 6 个单元格,这样每个单元格被选中的概率是相等的。 我需要找到一个使用 Random(start,end) 函数不超过 6 次的解决方案。

我无法使用任何额外的数据结构,重要的是每个单元格被选中的概率相等且独立。

最佳答案

调用随机(0,49)。读取生成的单元格,然后将数组中其后面的所有内容都打乱到一个位置,这样就得到了一个包含 49 个单元格的数组,其中缺少选取的值。

调用 Random(0,48) 并重复 6 次。

关于仅使用 rand(start,end) 6 次从 50 个元胞数组中选择 6 个不同的元胞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820388/

相关文章:

c - 与 memset 链接销毁

iphone - 我的 iPhone 项目中发生随机崩溃,看到两个调用堆栈,全部在 Web 核心中,在 UIWebView 解除分配后全部崩溃

php - 唯一值哈希 = 唯一哈希?

c# - 如何仅从字符串数组中选择一个随机字符串一次

c - GCC 数组默认填充值

c - 为什么一个简单的 C 程序需要系统调用?

在 C 程序的宏预处理器中调用内联函数

c++ - cblas_dgemv 的意外结果

Python反复随机删除列表条目

c++ - 如何生成一个范围内的随机数?