random - 如何获得从1到N随机排序的数字数组?

标签 random duplicates fortran

下面的代码生成一个由 N 个整数随机数组成的数组,并将结果存储在 random_int_array

 N=20
 allocate(array(N/2))
 call random_seed
 call random_number(array)
 random_int_array=int(array*N)

问题是我可能会在 random_int_array 中生成重复项,但我不希望这样。如何从该数组中删除重复项,或者等效地,如何生成一组唯一的随机数?

请注意,array 的维度为 N/2。所以问题基本上是从 N 中提取 N/2 个不重复的数字。

最佳答案

听起来您想要随机顺序从 1 到 19 的整数。这将是这些整数的洗牌。例如,参见 http://tekpool.wordpress.com/2006/10/06/shuffling-shuffle-a-deck-of-cards-knuth-shuffle/http://en.wikipedia.org/wiki/Fisher-Yates_shuffle

关于random - 如何获得从1到N随机排序的数字数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9840808/

相关文章:

c# - C#中的随机数问题

php - 检查 200 万个文件是否有重复项

MySQL 根据选定的列在组内重复行

python - 在 Python 中使用字典代替 Case/Switch 语句

关于有序对上的随机样本的算法设计手册(Steven Skiena)第 250 页

MySQL 多重复记录合并

python - Numpy 设置错误 : extra formal argument

build - Scons - Fortran 文件的构建顺序

fortran - 向具有 TARGET 属性的虚拟参数的过程提供不具有 TARGET 属性的参数

java - Java中获取随机数