试下:不重复不敢说;
for(var i=1;i<=10000;i++)
Math.round(Math.random()*i);
for(var i=1;i<=10000;i++)
Math.round(Math.random()*i);
解决方案 »
- 在下面的代码中如何实现数组的增删改查
- 麻烦各位帮我看一下一段Javascript,我怎么在IE7下和firefox可以运行还原两个被带出的下拉列表的值,但是IE6不行啊
- 没错,我就是看不懂这段HTML。。。谁能救救额。。。
- 如何处理document.write("<script>.....<\/script>")这样的语句
- 如何判断两个标签是否相同?
- 怎样用JS实现打开一个新生成的页面
- 消息弹出框效果的实现
- 如何实现动态表单付值
- 小弟因为最近问的问题比较多,分都没了就剩十分了,希望大家都来帮帮我!
- 怎样在flash或网页上设计停留一定时间即跳转到指定页面
- 乱码问题,请高手来帮忙,在线等,问题解决即解贴
- 如何在XML中加入JAVASCRIPT脚本???急!!拜师~~~
晕死!
4位的随机数的范围是1000-9999,总共就是10000个,你要9999个随机数?????????
1000-9999,总共就是10000个??????????????????
强,俺手指头不够用,大家帮数一下是不是10000个????
不过这样你要一次性申请一个9999个数的数组空间和一个用于交换的中间变量。为了方便起见,你可以直接用整数进行计数,输出的时候才格式化成标准4位。
一个复杂度为O(N)的算法是
数组是初始化好的数组NUM[N],算法计算后也是输出结果数组,N是你的数列元素数。
\\对数数组进行初始化操作
\\-------------算法开始---------------
for (i=0,i<N,++1)
{
tmp=NUM[i];
rnd=random()\\获取一个0到9998的随机整数rnd,这一步可能不对,我只提供算法。
NUM[i]=NUM[rnd];
NUM[rnd]=tmp;
}
\\-----------算法结束------------------
\\这时你依次输出数组NUM就是你要的乱序数列了,而且肯定不存在重复。
\\一般其他的发牌算法都存在可能不能结束循环的问题, 比如ygjwjj(塔克拉玛干---胡杨林)的方法
而 logicpig(南无) 的方法说起来简单,但实际操作时随着N的增大,会很麻烦,而且也存在不能获得的可能,比较随机数的获取是随机的(理论上的),理论上每个值的获得概率是相同的,但这是建立在巨大的尝试次数上的,而且对有限的计数,就很有可能有些数始终不出现。
{ alert("Be sure to select a correct maxnumbers!");}else
{ var ok = 1; r = new Array (numbercount); for (var i = 1; i <= numbercount; i++)
{ r[i] = Math.round(Math.random() * (maxnumbers-1))+1; } for (var i = numbercount; i >= 1; i--)
{ for (var j = numbercount; j >= 1; j--)
{ if ((i != j) && (r[i] == r[j])) ok = 0; } } if (ok) //随机数生成成功
{ for (var k = 1; k <= numbercount; k++)
{ alert(r[k]); }
} else numbers();}}
你还是要在洗牌算法中找。