huanxueer 发布留言 2008-6-19 14:48
求助!如何使所取随机数互异
想用随机函数取K个互不相等的整数放入数组t[K]中。程序片段如下:
srand((unsigned)time( NULL ));
for(i=0;i
{
t);
}
打印结果有时候会有相同元素。如何改造才能使数组元素互异?
爱喝牛奶的猫咪 发布留言 2008-6-19 14:52
预初始化一个内容为1-n的数组,然后随机打乱,再取前k个

huanxueer 发布留言 2008-6-19 15:10
不好意思,我想再请教一下怎么打乱呢?
卖菜的鸟 发布留言 2008-6-19 15:10
for(i=0;i
{
srand((unsigned)time( NULL ));
t);
}
这样呢
卖菜的鸟 发布留言 2008-6-19 15:11
要是K 比较大 好象效率超低也 这样做
huanxueer 发布留言 2008-6-19 15:16
我试过了,这样做取的数都是一样的
爱喝牛奶的猫咪 发布留言 2008-6-19 15:24
任意交换两个,交换足够多不就是打乱的一种吗

huanxueer 发布留言 2008-6-19 15:29
好办法。万分感激!
卖菜的鸟 发布留言 2008-6-19 15:31
我还没懂[tk09]
界水乘风 发布留言 2008-6-19 15:37
[un]爱喝牛奶的猫咪[/un] 在 2008-6-19 15:24 的发言:[/bo]
任意交换两个,交换足够多不就是打乱的一种吗
http://yzfy.byethost17.com/list.php?pw=101 [/quote] 唉,燕子,你怎么会给出这么个方法啊。。。。界水乘风 发布留言 2008-6-19 15:38 [un]爱喝牛奶的猫咪[/un] 在 2008-6-19 15:24 的发言:[/bo]
任意交换两个,交换足够多不就是打乱的一种吗
http://yzfy.byethost17.com/list.php?pw=101 |
唉,燕子,你怎么会给出这么个方法啊。。。。huanxueer 发布留言 2008-6-19 15:54 我已经解决了,呵呵 看看我做的 for(i=0;i t; t; t[j]=tt; k++; } for(i=0;i { printf(" %d\n",t[un]界水乘风[/un] 在 2008-6-19 15:38 的发言:[/bo]
唉,燕子,你怎么会给出这么个方法啊。。。。 |
这个有什么问题???

界水乘风 发布留言 2008-6-19 16:02
空间,时间都是问题啊。
既然是随机数,范围n=1000000不算大吧,那就要定义大数组空间,如果要基本上打乱,换n/2次似乎必须吧,那就是时间啊。而一般要取的个数k是远小于n的。
不知道我的想法对不对。
爱喝牛奶的猫咪 发布留言 2008-6-19 16:03
楼上你忘记了非常重要的一句话:具体问题具体分析
我说了那只是方法的一种,并且,在有的情况下那个方法将是最为高效的

界水乘风 发布留言 2008-6-19 16:05
呵呵,好吧。
页: [1]