在 09-8-11,四不象<tabri...@gmail.com> 写道:
> 有没有一种算法,可以得出一个随机数字序列,序列里的数字落在某个区间内,且不会重复,离散度要比较好。
>
> 或者换种说法,有没有一种快速算法,可以把一个顺序序列随机打乱
--
Kind Regards,
Jammy | 王加冕,http://www.geektu.com/
367# Mailbox, Institute of Mathematics, Shandong University, 27#
Shanda Nan Rd, Shandong, China. (250100)
数据结构与算法分析上的例子是
for(int i=0;i<N;++i)
a[i]=i+1;
for(int i=0;i<N;++i)
swap(a[i],a[rand(0,i)]);
有没有一种算法,可以得出一个随机数字序列,序列里的数字落在某个区间内,且不会重复,离散度要比较好。或者换种说法,有没有一种快速算法,可以把一个顺序序列随机打乱
或者换种说法,有没有一种快速算法,可以把一个顺序序列随机打乱
----这个问题,跟上一个问题并不等价,去看看 std::random_shuffle 的源码
有没有一种算法,可以得出一个随机数字序列,序列里的数字落在某个区间内,且不会重复,离散度要比较好。或者换种说法,有没有一种快速算法,可以把一个顺序序列随机打乱
random.seed()
while True;
list.swap( random.randint(0, listlength-1), random.randint(0,
listlength-1) )
一直循环到你满意为止.
2009/8/12 四不象 <tabri...@gmail.com>:
> 好像这些随机数生成算法不能保证不重复
>
> ----- Original Message -----
> From: jrckkyy
> To: pon...@googlegroups.com
> Sent: Wednesday, August 12, 2009 12:44 AM
> Subject: [TL] Re: {询问}{算法}生成不重复未随机数的算法
> 前几天看了个类似的算法希望对你有帮助 生成随机数的一个可靠算法,高质量的均匀分布的随机函数
>
> 2009/8/11 四不象 <tabri...@gmail.com>
前面一位老兄给出了正确的算法。
----- Original Message -----From: jrckkyySent: Wednesday, August 12, 2009 12:44 AMSubject: [TL] Re: {询问}{算法}生成不重复未随机数的算法
前几天看了个类似的算法希望对你有帮助 生 成随机数的一个可靠算法,高质量的均匀分布的随机函数
----- Original Message -----From: WenliangSent: Wednesday, August 12, 2009 11:05 AMSubject: [TL] Re: {询问}{算法}生成不重复未随机数的算法http://en.wikipedia.org/wiki/Linear_congruential_generator
四不象 wrote:
好像这些随机数生成算法不能保证不重复
----- Original Message -----From: jrckkyySent: Wednesday, August 12, 2009 12:44 AMSubject: [TL] Re: {询问}{算法}生成不重复未随机数的算法
前几天看了个类似的算法希望对你有帮助 生成随机数的一个可靠算法,高质量的均匀分布的随机函数
如果随机数的集合不大,那么每次随机选取一个集合中的数,并把它从集合中去掉,这样肯定是不重的。不过取完就没了。
如果随机数的集合比较大,简单的办法就是搞个数据库的表(条件合适也可以用hash set),只有一列,是个unique key,每次生成的随机数
插入数据表,如果插不进去,表明已经用过了。
四不象 wrote:
> 英文看起来比较辛苦,线性同余可以保证生成随机数不重复?
> ----- Original Message -----
> From: Wenliang
> To: pon...@googlegroups.com
> Sent: Wednesday, August 12, 2009 11:05 AM
> Subject: [TL] Re: {询问}{算法}生成不重复未随机数的算法
>
>
> http://en.wikipedia.org/wiki/Linear_congruential_generator
>
> 四不象 wrote:
> 好像这些随机数生成算法不能保证不重复
> ----- Original Message -----
> From: jrckkyy
> To: pon...@googlegroups.com
> Sent: Wednesday, August 12, 2009 12:44 AM
> Subject: [TL] Re: {询问}{算法}生成不重复未随机数的算法
>
>
> 前几天看了个类似的算法希望对你有帮助 生成随机数的一个可靠算法,高质量的均匀分布的随机函数
>
>
> 2009/8/11 四不象 <tabri...@gmail.com>
要想代价小,要么就用一些重复概率足够低的算法(比如生成UUID),问题是你能接受多高的重复概率?
换一个问题,你想生成多少位的随机数?
四不象 wrote:
> - - 这个方法代价也太大了
觉得就是寻找一个给定初始条件的算法,在0~n次循环中不重不漏地产生0~n个数字,即使在给定任意足够长的产生的序列后第三方仍然无法(或者计算困难
的)在不知道初始条件的情况下预测下一个数字。
这个算法是不存在的。假设这个算法存在,那么在给定了前面产生的n-1个数字之后就可以准确预测下一个数字(因为产生的序列是不重不漏的)。
On Aug 11, 9:15 pm, Wenliang <wla...@gmail.com> wrote:
> 可以。但要满足一定条件,
> 比如a=5, b=3, c=0, x0 = 7, m=8
> x1 = (5*7 + 3) % 8 = 6
> x2 = (5*6 + 3) % 8 = 1
> x3 = (5*1 + 3) % 8 = 0
> x4 = (5*0 + 3) % 8 = 3
> x5 = (5*3 + 3) % 8 = 2
> x6 = (5*2 + 3) % 8 = 5
> x7 = (5*5 + 3) % 8 = 4
> 所以就随机选择满足条件的a, b, c, 初始值吧
> 四不象 wrote:英文看起来比较辛苦,线性同余可以保证生成随机数不重复?
>
> ----- Original Message -----
>
> From:Wenliang
>
> To:pon...@googlegroups.com
>
> Sent:Wednesday, August 12, 2009 11:05 AM
>
> Subject:[TL] Re: {询问}{算法}生成不重复未随机数的算法
>
>
>
> http://en.wikipedia.org/wiki/Linear_congruential_generator
> 四不象 wrote:好像这些随机数生成算法不能保证不重复
>
> ----- Original Message -----
>
> From:jrckkyy
>
> To:pon...@googlegroups.com
>
> Sent:Wednesday, August 12, 2009 12:44 AM
>
> Subject:[TL] Re: {询问}{算法}生成不重复未随机数的算法
>
>
>
> 前几天看了个类似的算法希望对你有帮助生成随机数的一个可靠算法,高质量的均匀分布的随机函数2009/8/11 四不象<tabri...@gmail.com>有没有一种算法,可以得出一个随机数字序列,序列里的数字落在某个区间内,且不会重复,离 散度要比较好。
> 前几天看了个类似的算法希望对你有帮助生成随机数的一个可靠算法,高质量的均匀分布的随机函数2009/8/11 四不象<tabris17.cn@gmail.com>有没有一种算法,可以得出一个随机数字序列,序列里的数字落在某个区间内,且不会重复,离 散度要比较好。
x = (a * x + b) % c
同奇怪,楼主貌似正是在寻找洗牌算法,只是他说的不是这个词而已。而不是说用洗牌算法来获取一个随机数列。
----- Original Message -----From: qiaojieSent: Wednesday, August 12, 2009 10:51 PMSubject: [TL] Re: {询问}{算法}生成不重复未随机数的算法
----- Original Message -----From: wanng fenngSent: Thursday, August 13, 2009 10:55 AMSubject: [TL] Re: {询问}{算法}生成不重复未随机数的算法
On Aug 11, 8:35 pm, rockeet <rock...@gmail.com> wrote:
> 有没有一种算法,可以得出一个随机数字序列,序列里的数字落在某个区间内,且不会重复,离散度要比较好。
> ----随机分布,不重复,是相互矛盾的需求
>
> 或者换种说法,有没有一种快速算法,可以把一个顺序序列随机打乱
> ----这个问题,跟上一个问题并不等价,去看看 std::random_shuffle 的源码
有没有一种算法,可以得出一个随机数字序列,序列里的数字落在某个区间内,且不会重复,离散度要比较好。----随机分布,不重复,是相互矛盾的需求
或者换种说法,有没有一种快速算法,可以把一个顺序序列随机打乱
----这个问题,跟上一个问题并不等价,去看看 std::random_shuffle 的源码
On 8月11日, 下午6时23分, 四不象 <tabris17...@gmail.com> wrote:
> 有没有一种算法,可以得出一个随机数字序列,序列里的数字落在某个区间内,且不会重复,离散度要比较好。
>
> 或者换种说法,有没有一种快速算法,可以把一个顺序序列随机打乱