相关疑难解决方法(0)

不止一次播种伪随机数发生器的问题?

我已经看到了很多关于每次执行不多次伪随机数生成器的建议,但从未附带过彻底的解释.当然,很容易理解为什么以下(C/C++)示例不是一个好主意:

int get_rand() {
  srand(time(NULL));
  return rand();
}
Run Code Online (Sandbox Code Playgroud)

因为get_rand每秒调用几次会产生重复的结果.

但是下面的例子不是一个可以接受的解决方案吗?

MyRand.h

#ifndef MY_RAND_H
#define MY_RAND_H

class MyRand
{
  public:
    MyRand();
    int get_rand() const;
  private:
    static unsigned int seed_base;
};

#endif
Run Code Online (Sandbox Code Playgroud)

MyRand.cpp

#include <ctime>
#include <cstdlib>
#include "MyRand.h"

unsigned int MyRand::seed_base = static_cast<unsigned int>(time(NULL));

MyRand::MyRand()
{
  srand(seed_base++);
}

int MyRand::get_rand() const
{
  return rand();
}
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include <iostream>
#include "MyRand.h"

int main(int argc, char *argv[]) 
{
  for (int i = 0; i < 100; i++) 
  {
    MyRand r;
    std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ random seed srand prng

5
推荐指数
1
解决办法
2007
查看次数

Python:random.random()种子在哪里?

说我有一些python代码:

import random
r=random.random()
Run Code Online (Sandbox Code Playgroud)

从一般来说,种子的价值在哪里?
如果我的操作系统没有随机,那么播种在哪里呢?
为什么不推荐用于加密?有没有办法知道随机数是什么?

python random cryptography random-seed

5
推荐指数
1
解决办法
1205
查看次数

为什么golang重复相同的随机数?

我是新手rand.Intn(n int) int,不知道为什么它rand.Intn(n int) int为每次运行打印相同的数字:

package main

import (
    "fmt"
    "math/rand"
)


func main() {
    fmt.Println(rand.Intn(10)) 
}
Run Code Online (Sandbox Code Playgroud)

文档说:

Intn从默认Source返回[0,n]中的非负伪随机数作为int.如果n <= 0则会发生恐慌.

我如何正确播种随机数生成?

random go

3
推荐指数
1
解决办法
1828
查看次数

标签 统计

random ×3

c++ ×1

cryptography ×1

go ×1

prng ×1

python ×1

random-seed ×1

seed ×1

srand ×1