问题描述
- 程序随机问题(写一个随机函数) 1C
- 题目:写一个随机函数
要求如下:
1,函数的参数为floatint float为概率的百分比 int为要返回的数据量
2,返回值为一个队列 队列放true与false true出现的数量的占总数量的float所描述的百分比 true与 false的总量为int描述的 true出现的在队列的位置必须是随机的
3,尽量少出现连续5个false 尽量少出现连续5个true,false 交叉的情况
4,保证每次循环的结果不一样
解决方案
你没有说用什么语言。一般各种语言都有随机数的库,自己看下。
解决方案二:
先拆解问题:
固定概率取值(true/false).
各个语言本身有随机数生成器,通常认为这个随机数生成器是等概率的。
假设float为50%。我现在调用随机数函数,随机值范围为0、1.取到0为true,1为false。取int次,放到queue中即可
加上float为20%。可以让随机数取值为0、1、2、3、4,取到0为true,其他都是false,取int次,放到queue中
解决方案三:
看看 这个可以吗
public class Demo {
/*1,函数的参数为floatint float为概率的百分比 int为要返回的数据量
2,返回值为一个队列 队列放true与false true出现的数量的占总数量的float所描述的百分比 true与 false的总量为int描述的 true出现的在队列的位置必须是随机的
3,尽量少出现连续5个false 尽量少出现连续5个true,false 交叉的情况
4,保证每次循环的结果不一样*/
ArrayList list=new ArrayList();
public ArrayList randomNum(float probabilityint returnNum){
Random random=new Random();
for(int i=0;i if(random.nextFloat()>=0&&random.nextFloat()<=(probability/10)){
list.add(true);
}else{
list.add(false);
} } return list;}public static void main(String[] args) { Demo demo=new Demo(); System.out.println(demo.randomNum(520 ).toString());}
}
首先float中的值 是概率 不能大于10