由小黄车的七夕集卡来谈随机算法及相关实现

这篇文章讲了什么

讲了我对小黄车公司的七夕集卡活动的不满意,因为我集了那么久都没有集到那个二八车卡,之后我就自己在分析关于这个的一些事情,后来自己实现了一个类似的坑爹的随机模型。

代码1

先来看小黄车的集卡活动,小黄车集卡活动其他的四张卡都是非常好集的,简直不要太简单了。。。然后就是那个二八车非常难以集到,估计小黄车的数量要上千万辆吧,但是集齐的只有不到30万人,这个比例大概是几十比一的比例。

于是我就自己想了一个模型出来,用户每次去骑车都给他分配一张卡片。
我假设是两张卡片(小黄车卡与二八车卡)。然后100次中有5次是二八车卡,而小黄车卡是95次。

于是就得到了下面的代码(用rand实现随机)

#include  
#include  
#include 
#include 
#include 
#include   
using namespace std;
int main()
{
    int a = 0, b = 0,count=1;  //a代表小黄车数量,b代表二八车数量
    srand((unsigned)time(NULL));
    while (1){
        if (rand()%2){
            if (a < 95){
                cout << count++<< "小黄车"<else{
            if (b < 5){
                cout << count++<<"二八车"<cout << "a:" << a << "------------------" << "b:" << b << endl;
    system("pause");
    return 0;
}

大概就是这个样子的
由小黄车的七夕集卡来谈随机算法及相关实现_第1张图片

这是一种伪随机,因为每次发放小黄车跟二八车的概率是一样的,所以我这里用了一个改进版本,只需要让每次发放二八车跟小黄车的概率不一样就可以了!!!

改进的版本如下:

#include  
#include  
#include 
#include 
#include 
#include   
using namespace std;
int main()
{
    int a = 0, b = 0,count=1;  //a代表小黄车数量,b代表二八车数量
    srand((unsigned)time(NULL));
    while (1){
        int temp = rand() % 100;
        if (temp>=0 &&temp<95 ){
            if (a < 95){
                cout << count++<< "小黄车"<else{
            if (b < 5){
                cout << count++<<"二八车"<cout << "a:" << a << "------------------" << "b:" << b << endl;
    system("pause");
    return 0;
}

由小黄车的七夕集卡来谈随机算法及相关实现_第2张图片
改进的版本很明显的能够感受到二八车的分布不再是靠前了,而是真正的等概率在1-100的区间分布。

**记笔记:最重要的知识点就是如何实现非等概率分布“

你可能感兴趣的:(C++,C)