在C/C++中获取大的随机数

栏目: C++ · 发布时间: 7年前

内容简介:标准rand()函数给出的数字对我来说不够大:我需要无符号长long.我们如何获得非常大的随机数?我尝试修改一个简单的哈希函数,但它太大了,运行时间太长,从不产生小于1e5的数字!!翻译自:https://stackoverflow.com/questions/28115724/getting-big-random-numbers-in-c-c

标准rand()函数给出的数字对我来说不够大:我需要无符号长long.我们如何获得非常大的随机数?我尝试修改一个简单的哈希函数,但它太大了,运行时间太长,从不产生小于1e5的数字!!

这是一个便携式C99解决方案,它返回一个随机的64位数字:

unsigned long long llrand() {
    unsigned long long r = 0;

    for (int i = 0; i < 5; ++i) {
        r = (r << 15) | (rand() & 0x7FFF);
    }

    return r & 0xFFFFFFFFFFFFFFFFULL;
}

说明:rand()返回0到RAND_MAX范围内的整数,RAND_MAX仅保证至少为32,767(15个随机位). long long保证有64位但可能更大.

翻译自:https://stackoverflow.com/questions/28115724/getting-big-random-numbers-in-c-c


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

大演算

大演算

佩德羅.多明戈斯 / 張正苓,胡玉城 / 三采 / 2016-8-1 / 620

揭開大數據、人工智慧、機器學習的祕密, 打造人類文明史上最強大的科技——終極演算法! 有一個終極演算法,可以解開宇宙所有的祕密, 現在大家都在競爭,誰能最先解開它! .機器學習是什麼?大演算又是什麼? .大演算如何運作與發展,機器可以預測什麼? .我們可以信任機器學過的東西嗎? .商業、政治為什麼要擁抱機器學習? .不只商業與政治,醫學與科學界也亟需......一起来看看 《大演算》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具