js生成随机数(指定范围)的代码
发布时间:2016-09-07, 14:52:54 分类:HTML | 编辑 off 网址 | 辅助
正文 1944字数 631,686阅读
为大家介绍js生成随机数的例子,生成指定长度或范围的随机数,这个用的地方还是很多的,有需要的朋友,可以参考学习下。
1、随机生成4位数的随机数
<script language="javascript">
/**
* 随机生成4位的随机数
* http://www.lizhenqiu.com
*/
document.write(parseInt(10*Math.random())); //输出0~10之间的随机整数
document.write(Math.floor(Math.random()*10+1)); //输出1~10之间的随机整数
function RndNum(n){
var rnd="";
for(var i=0;i<n;i++)
rnd+=Math.floor(Math.random()*10);
return rnd;
}
document.write(RndNum(4)); //输出指定位数的随机数的随机整数
</script>
2、随机生成指定的数据范围的随机数
1)、从1开始 至 任意值
parseInt(Math.random()*上限+1);
2)、从任意值开始至任意值
<script>
parseInt(Math.random()*(上限-下限+1)+下限);
function fRandomBy(under, over){
switch(arguments.length){
case 1: return parseInt(Math.random()*under+1);
case 2: return parseInt(Math.random()*(over-under+1) + under);
default: return 0;
}
}
document.write(fRandomBy(1,100)); //输出指定范围内的随机数的随机整数
</script>
//给既定文本框按规则付不同的值[引申]
<script>
window.onload=function(){
var o=document.getElementsByTagName('input');
o[0].value=fRandomBy(1,10);
o[1].value=fRandomBy(11,20);
o[2].value=fRandomBy(1,100);
o[3].value=fRandomBy(51,100);
}
</script>
1-10: <input type="text" /><br />
11-20: <input type="text" /><br />
1-100: <input type="text" /><br />
51-100: <input type="text" /><br />
3、扩展例子:
<html>
<head>
<title>Math-生成随机数的例子-www.lizhenqiu.com</title>
</head>
<body>
<script language="javascript" type="text/javascript">
total = 0
for(i=1;i<=5000;i++){
num=Math.random();
total +=num
}
average = total/5000;
average = Math.round(average*1000)/1000;
document.write("<h1>平均数:"+average+"</h1>")
</script>
</body>
</html>
Run code
Cut to clipboard
查看原文
(支付宝)给作者钱财以资鼓励 (微信)→
有过 3 条评论 »
<?php /* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数 * $min 和 $max: 指定随机数的范围 * $num: 指定生成数量 */ function unique_rand($min, $max, $num) { $count = 0; $return = array(); while ($count < $num) { $return[] = mt_rand($min, $max); $return = array_flip(array_flip($return)); $count = count($return); } shuffle($return); return $return; } $arr = unique_rand(1, 25, 16); sort($arr); $result = ''; for($i=0; $i < count($arr);$i++) { $result .= $arr[$i].','; } $result = substr($result, 0, -1); echo $result; ?>
function array_sort($arr,$keys,$orderby='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } //对key集合排序 if($orderby== 'asc'){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); //根据排序好的key按顺序从原数组中获取对应的值 foreach ($keysvalue as $k=>$v){ $new_array[] = $arr[$k]; } return $new_array; }
在面试时,面试官问了我一道js题:随机生成一个含有10个元素的数组,且元素为0-100的不重复的整数。当时的第一反应是for循环生成10个数字,但是可能会有重复的情况;进一步思考,需要对生成的数字进行验证才能放到数组里面,但是问题来了,如果恰好有重复的,那我之前for循环生成的10个数字就不够了。当时回答的不好,回来后再仔细思考一下,想出了2中解决方案,第一种其实是尝试过程中得出的,还是第二种比较好。
第一种:
function random () { var arr = []; for (var i = 0; i < 100; i++) {//生成循环100次,生成100个数字。该方法最大的弊端,为了避免有重复的情况导致数组不足10个元素,所以生成较多的数字 var num = Math.floor(Math.random() * 100);//生成0-100的随机整数 if (arr.length == 0) { arr.push(num);//数组为空时直接放入数组 } else { for (var j = 0; j < arr.length; j++) {//循环已存在的数组 if (arr.join(',').indexOf(num) < 0 && arr.length <= 10) {//判断已存在数组中是否已有刚生成的数字,如没有且数组长度不足10才将num放入arr arr.push(num); //这样又会导致生成的大部分数字被arr.length <= 10排除掉了,浪费性能 } } } } }
第二种:
function random () { var arr = []; while(arr.length < 10) {//原数组长度为0,每次成功添加一个元素后长度加1,则当数组添加最后一个数字之前长度为9即可 var num = Math.floor(Math.random() * 100);//生成一个0-100的随机整数 if (arr.length === 0) {//如果数组长度为0则直接添加到arr数组 arr.push(num); } else { for (var i = 0; i < arr.length; i++) {//当新生成的数字与数组中的元素不重合时则添加到arr数组 if (arr.join(',').indexOf(num) < 0) { arr.push(num); } } } } }