#include <memory>
#include <functional>
#include <zmq.hpp>
#include <zhelpers.hpp>
void main(){
char identity[10] = {};
sprintf(identity, "%04X-%04X", within(0x10000), within(0x10000));
printf("%s\n", identity);
}
我从这里参考: https://github.com/imatix/zguide/blob/master/examples/C%2B%2B/asyncsrv.cpp
答案 0 :(得分:1)
我不知道within()
的作用,但您可能希望使用新方法生成随C++11引入的随机数。该链接有一个很好的例子。
如果链接在将来的某个时间内无效,请参阅以下相关代码:
#include <iostream>
#include <random>
int main {
// Seed with a real random value, if available
std::random_device rd;
// Choose a random number between 1 and 6
std::default_random_engine engine(rd());
std::uniform_int_distribution<int> uniform_dist(1, 6);
int randomNumber = uniform_dist(engine);
int anotherRandomNumber = uniform_dist(engine);
std::cout << "Randomly-chosen number: " << randomNumber << '\n';
std::cout << "Another Randomly-chosen number: " << anotherRandomNumber << '\n';
}
答案 1 :(得分:1)
虽然我对回答这么糟糕的问题犹豫不决......
根据Mike Seymour找到的within()
的定义,您的代码相当于:
#include <stdlib.h>
#include <stdio.h>
#define within(num) (int) ((float) (num) * rand () / (RAND_MAX + 1.0))
void main(){
char identity[10] = {};
sprintf(identity, "%04X-%04X", within(0x10000), within(0x10000));
printf("%s\n", identity);
}
此代码 生成(伪)随机数。您可能感到困惑的是,它确实在每次运行程序时生成相同的(伪)随机数。然而,这就是伪随机数生成器做:给定相同的种子(因为您不通过srand()
为种子生成种子),它们会生成相同的数字序列。 (因此“伪”。)
我强烈推荐其他阅读,例如man rand
。