相关疑难解决方法(0)

O(1)中的唯一(非重复)随机数?

我想生成0到1000之间永远不会重复的唯一随机数(即6不会出现两次),但这并不是像以前的值的O(N)搜索那样.这可能吗?

language-agnostic random algorithm math

174
推荐指数
9
解决办法
9万
查看次数

创建无重复的随机数序列

重复:

O(1)中的唯一随机数?

我想要一个伪随机数生成器,它可以按随机顺序生成没有重复的数字.

例如:

随机(10)

可能会返回5,9,1,4,2,8,3,7,6,10

有没有更好的方法来做到这一点,除了使数字的范围和洗牌,或检查生成的列表重复?


编辑:

此外,我希望它在没有整个范围的情况下有效地生成大数字.


编辑:

我看到每个人都建议使用随机算法.但是,如果我想生成大的随机数(1024字节+),那么该方法将占用更多的内存,而不是我刚使用常规RNG并插入到Set中,直到它是指定的长度,对吧?对此没有更好的数学算法.

c c++ random algorithm

38
推荐指数
5
解决办法
7万
查看次数

从链表中有效地选择一组随机元素

说我有一个长度数字的链表N.N非常大,我事先并不知道确切的价值N.

如何最有效地编写一个从列表中返回k完全随机数的函数?

language-agnostic algorithm list

37
推荐指数
2
解决办法
3万
查看次数

选择单个随机值组合的算法?

说我有y不同的值,我想x随机选择它们.这样做的有效算法是什么?我可以打电话给rand() x时间,但如果很大x,表现会很差y.

请注意,此处需要组合:每个值应具有相同的概率,但结果中的顺序并不重要.当然,任何生成算法都是合格的,但我想知道如果没有随机顺序要求,是否可以更有效地做到这一点.

如何有效地生成0和上限N之间的K个非重复整数的列表,涵盖了这种情况的排列.

algorithm combinations

35
推荐指数
2
解决办法
2万
查看次数

如何有效地生成0和上限N之间的K个非重复整数列表

该问题给出了所有必要的数据:在给定区间[0,N-1]内生成一系列K个非重复整数的有效算法是什么.平凡算法(产生随机数,并把它们添加到序列,看着他们,看看他们是否已经在那里之前)是非常昂贵的,如果ķ大且足够接近ñ.

从链表有效地选择一组随机元素中提供的算法似乎比必要的更复杂,并且需要一些实现.我刚刚发现了另一种似乎可以完成工作的算法,只要您知道所有相关参数,只需一次通过即可.

arrays random algorithm permutation

29
推荐指数
3
解决办法
2万
查看次数

C编程语言中整数数组中的唯一随机数

可能重复:
O(1)中的唯一随机数?

如何在C中填充具有唯一值(无重复项)的整数数组?

int vektor[10];   

for (i = 0; i < 10; i++) {
    vektor[i] = rand() % 100 + 1;
}

//No uniqueness here
Run Code Online (Sandbox Code Playgroud)

c random algorithm

28
推荐指数
2
解决办法
8万
查看次数