题目:产生0-9中的随机数,要求0到9出现的概率依次递减,
一般思路,把10个0,9个1,8个2.....2个8,1个9放到数组中,然后随机生成数组下标,按下标取出数字.
二般思路:生成两个0-9的随机数,取小的那个,这个思路(手链魔咒提出)说实际的不知道是什么原理,但是实验证明,确实能达到效果.
验证方法:
程序代码
<?php
function fun(){
$num = rand(0,9); //10以内的数字平均分配
$num2 = rand(0,9);
($num2<=$num) ? $return.=$num2 : $return.=$num;
return $return;
}
function totalStr($haystack, $needle,$i = 0){//检验字串中某个字符出现的次数
while(strpos($haystack,$needle) !== false) {
$haystack = substr($haystack, (strpos($haystack,$needle) + 1));
$i++;
}
return $i;
}
for ($i=0;$i<=1000;$i++){
$str .= fun();
}
for ($i=0;$i<=9;$i++){
echo totalStr($str,"$i")."\n"; //0-9出现的次数
}
?>
写下这片后不久,手链魔咒有优化了算法
具体见下:
程序代码
function getRand($min,$max) {
$num=rand($min,$max);
return rand($min,$num);
}
还有另一位高人写的一个函数,数学思想比较强,不太好理解
程序代码
function getRandomByFactor($max,$factor=2){
$c = rand(0,pow($max,$factor));
return $max - ceil(pow($c,1/$factor));
}
分享到:
相关推荐
北邮数电实验 6 随机数生成电路的设计与实现 报告(含VHDL代码)
可以生成制定范围内的随机数。有GUI界面
随机数生成专家是一款免费强大的随机数生成器,该软件无需安装,打开即可使用,支持三种随机数生成模式,比如范围模式、列举模式和多维模式,可以生成不同形式的随机数,支持生成指定范围内的几乎所有精度的整数和...
程序包含了随机数值生成的几种方法,可以直接拿来用。
包含随机数生成器的源码和打包好的软件,可以生成设定区间的任意个随机数
Java简易随机数生成 下载完请输入测试代码 public static void main(String[] args) { System.out.println(random(50,100));//example System.out.println(random(50.0,100.0)); }
1. 设计并实现一个随机数生成电路,每2秒随机生成一个0~999之间的数字,并在数码管上显示生成的随机数。2. 为系统设置一个复位键,复位后数码管显示“000”,2秒后再开始每2秒生成并显示随机数,要求使用按键复位。
随机数生成器,可以随机生成随机数,可用于幸运号抽奖等。
随机数生成器(包括数字、字母、特殊符号)
labview随机数生成并组成数组.vi
JAVA做的0-100随机数生成器,可脱离JAVA环境运行,稍微有点大
可以随机生成序列号、纯数字、字符串; 其中随机生成纯数字可以自己控制随机数位数。
使用NIST统计测试集验证STM32微控制器随机数生成 使用NIST统计测试集验证STM32微控制器随机数生成 使用NIST统计测试集验证STM32微控制器随机数生成 使用NIST统计测试集验证STM32微控制器随机数生成 使用NIST统计测试...
vb.net写的随机数生成 界面美观 生成后可冒泡排序 可自定义生成个数 和范围
随机数生成器 可以自动生成满足各种分布条件的随机数
详细介绍了随机数生成的方法
既可以在不指定范围产生随机数 也可以在指定范围产生随机数,产生0到某个数的随机数
语言用的是C++ ; 开发工具用的是DEV-C; 可指定随机数范围和生成个数; 算法很简单,是一个实用的小工具
数值分析随机数生成问题的matlab的范例,超好用der