HDU1014 Uniform Generator

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1014

这道题就是题目有点难懂,其实难度很小,就是产生伪随机数时给出的步长step和上限mod,判断下这两个值是否可以让产生的随机数均匀分布,所谓的均匀分布就是在mod步里能产生出0mod-1mod个数。

#include <iostream>
using namespace std;

const long int MAX_MOD = 100000;
bool gened[MAX_MOD] = {false};//数是否产生

void doRandomTest(int step,int mod)
{
    
int seed = 0,tmp,i;//初始种子值为零
    for(i=0;i<mod;++i)
    
{//刚开始数都未产生
        gened[i] = false;
    }

    gened[
0= true;//第一个产生的是零
    do
    
{
        tmp 
= (seed+step)%mod;
        gened[tmp] 
= true;//第tmp个数已经产生了
        seed = tmp;//更新种子数
    }
while(seed!=0);
    
for(i=0;i<mod;++i)
    
{
        
if(gened[i]==false)//有数没有产生出来
            break;
    }

    
if(i==mod)
    
{
        printf(
"%10d%10d    Good Choice\n",step,mod);
    }

    
else
        printf(
"%10d%10d    Bad Choice\n",step,mod);
    cout
<<endl;
}


int main(int argc,char* argv[])
{
    
int step,mod,i;
    
while(cin>>step>>mod)
    
{
        doRandomTest(step,mod);
    }

    
return 0;
}

posted on   Phinecos(洞庭散人)  阅读(1140)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述

导航

统计

点击右上角即可分享
微信分享提示