美文网首页
产生0~N-1之间随机数

产生0~N-1之间随机数

作者: help_youself | 来源:发表于2021-09-10 22:13 被阅读0次
    #include<stdio.h>
    #include <iostream>
    #include <time.h>
    #include <stdlib.h>
    #include <stdint.h>
    //return 0~N-1
    int rand_n(int n){
        uint64_t x=(RAND_MAX+1)/n;
        uint64_t cap=x*n;
        uint64_t r=0;
        do{
            r=rand();
        }while(r>=cap);
        return r/x;
    }
    
    int main(){
        srand((int)time(0));
        for(int i=0;i<10;i++){
            std::cout<<rand_n(3)<<std::endl;
        }
        return 0;
    }
    

    Reference:
    [1] how-to-generate-uniform-distribution
    [2] How do I get a specific range of numbers from rand

    相关文章

      网友评论

          本文标题:产生0~N-1之间随机数

          本文链接:https://www.haomeiwen.com/subject/xxonwltx.html