请写一个程序,随机打印“0”、“1”、“2”,但保证“0”、“1”、“2”出现的概率是可配置的,例如2:1:3。
来源:互联网 发布:最好网络质量测试工具 编辑:程序博客网 时间:2024/06/09 23:26
请写一个程序,随机打印“0”、“1”、“2”,但保证“0”、“1”、“2”出现的概率是可配置的,例如2:1:3。
#include <iostream>
using namespace std;
#include <time.h>
void Rand012(itn __0, int __1, int __2, int __count) {
int _0 = __0;
int _1 = __1;
int _2 = __2;
int count_0 = count_1 = count_2 = 0;
float real_0 = real_1 = real_2 = 0.0;
real_0 = 1.0 * __count * _0 / (_0 + _1 + _2);
real_1 = 1.0 * __count * _1 / (_0 + _1 + _2);
real_2 = 1.0 * __count * _2 / (_0 + _1 + _2);
srand(time(0));
int sum = __count;
for(int i = 0; i < sum; i++) {
int num = rand() % __count;
if(num <= real_0 && count_0 < real_0) {
cout << 0 << ' ';
count_0++;
} else if(num > real_0 && num <= real_0 + real_1 && count_1 < real_1) {
cout << 1 << ' ';
count_1++;
} else if(num > real_0 + real_1 && num <= real_0 + real_1 + real_2 && count_2 < real_2) {
cout << 2 << ' ';
} else {
sum++;
}
}
cout << endl;
cout << "-------------------------------request----------------------" << endl;
cout << "_0: " << real_0 << endl;
cout << "_1: " << real_1 << endl;
cout << "_2: " << real_2 << endl;
cout <<"-------------------------------test-------------------------" << endl;
cout << "count_0: " << count_0 << endl;
cout << "count_1: " << count_1 << endl;
cout << "count_2: " << count_2 << endl;
}
- 请写一个程序,随机打印“0”、“1”、“2”,但保证“0”、“1”、“2”出现的概率是可配置的,例如2:1:3。
- 又是一道随机问题,问题是说:写一个函数返回0,1,2,3这几个数字中的一个数,其中0概率是10%,1是20%,2是30%,3是40%
- 给定一系列数字,请打印出这些数字的所有排列,例如1,2,2,3,4,请列出所有的排列
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 一个无聊的小程序,随机尾数出现的概率
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。 请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n), 空间复杂度是O(1)
- 写一个程序,语言不限,打印出100的阶乘(即1*2*3*…*100)的精确数值结果(不能是浮点数)。如5的阶乘是1*2*3*4*5=120
- [面试算法]有一无符号整型数组,大小为10, 初始的数值随机,但在[0, 99]之间。请用C语言写一个过滤程序,令数组内的数据互不相等。
- 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1234),则应该返回1+2+3+4,它的和是10
- 请用rand1To5实现等概率随机产生1~7的随机函数rand1To7
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 22.数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
- 黑马程序员—编写程序,打印1到100之内的整数,但数字中包含7的要跳过,例如:17、27、71、72
- 转载:测试基础
- jQuery.each( object, callback,arg)
- 通信术语
- What's the difference between Heap and Stack
- case convert
- 请写一个程序,随机打印“0”、“1”、“2”,但保证“0”、“1”、“2”出现的概率是可配置的,例如2:1:3。
- java Date学习总结
- 行的上下移动(包括物理移动和数据库的移动)
- Solution of ZOJ 2840 File Search
- freemark建立自定义标记宏 <@
- 解释PLMN,CELLID,LAC
- 微软面试题001-二叉树转化为链表
- 无意义-wd5
- 使用Time类遍历一学期的所有天