我已经阅读了很多关于如何编写自己的随机数生成器的指南,所以我对为什么要编写自己的随机数生成器很感兴趣,因为大多数语言已经提供了生成随机数的函数:
像C++一样
srand(time(NULL));
rand();
C#
Random rand = new Random();
rand.Next(100);
和Java
Random rand = new Random();
rand.nextInt(0, 100);
我主要是在寻找使用你自己的优势。
我不确定堆栈溢出是否是问这个问题的合适地方,但我很好奇如何表示随机变量。
假设一个随机变量X ~ N(mu, sigma),那么我们可以分别用它的均值和协方差来表示它。然而,我知道这只适用于高斯分布。如果我想表示一个泊松分布,那么这个数据类型就不能再保存随机变量了。
我的问题可以归结为,有没有像其他数据结构一样表示随机变量的语言/库?就我个人而言,我发现很难理解随机变量的概念,这样的表示将是很棒的。我的理想概念是
RandomVariable rv = new RandomVariable(mu, sigma) // Assume 1-Dimension as of now
我知道在MATLA
我用rand()在C中做了一个简单的例子,但是函数总是返回相同的数字,尽管我使用srand()。
这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int generate(int min, int max)
{
srand(time(NULL));
return rand() % (max - min + 1) + min;
}
int main()
{
int i;
for (i = 0; i < 10; i++)
{
我有两个数组。我想在两个数组中都获得一个随机条目作为输出。所以我们生成一个随机数,比如说3。我想要输出;两个数组中的第3个条目。在这种情况下,它是"3“和"c”。 我试着写这篇文章,但它不起作用。 var myarray = new Array('1', '2', '3', '4');
var myarray2 = new Array('a', 'b', 'c', 'd');
document.getElementsByClassName(
我需要创建具有不同长度的随机数(0或1)的列表。我需要长度为10个数字,20个数字,一直到500的列表。这就是我所拥有的:
import random
list1 = []
for x in range(10,501,10):
list1.append(random.randint(0,1))
print(list1)
list1.clear()
所以我得到了50个列表,其中只有一个随机数。我知道range()是我的问题,因为它只是一个迭代器,那么我该怎么做才能避免编写50for循环来获取所有这些列表呢?
所以这可能是多余的,也许这就像问为什么大多数人生来就有5个手指,最后的简短答案总是:因为它就是这样的,它只是工作,但我讨厌这个答案,我想知道Rnd()在VBA中是如何工作的。
Ms Office Excel的MSDN表示,RND定义为:
Rnd[(number)] 'The optional number argument is a Single or any valid numeric expression.
它接着说
数字的值决定了Rnd是如何产生随机数的:对于任何给定的初始种子,都会产生相同的数字序列,因为每次对Rnd函数的连续调用都使用前一个数字作为序列中下一个数的种子。
我是汇编新手,在生成随机数时遇到了问题。
我的代码很简单:它在0-25范围内生成100个数字,并将它们存储在一个数组中。
我遇到的问题是,当我在emu8086汇编程序上运行con时,它会成功运行,并生成100个随机数,这些随机数存储在数组中。但是当我在masm611上运行它时,它每4个周期生成一个新的随机数。这意味着数组中的值对于4个值是连续的相同数字,然后存储下一个随机值。
下面是我的代码:
.model small
.stack 100h
.data
range db 25
i db 0 ;iterator
arr db 15 dup(0)
我正在用MATLAB运行模拟器。然而,这需要几天的时间。因此,我决定将代码改为C。(首先,我尝试在MATLAB中使用c-mex,但我认为编码和调试非常困难。mxType!?!因此,我决定使用visual studio 2017编写C代码。)
在我的MATLAB代码中,我使用了
x = [unifrnd(varmin(1),varmax(1),varnum,1),...
unifrnd(varmin(2),varmax(2),varnum,1),...
unifrnd(varmin(3),varmax(3),varnum,1)];
也就是说,x是大小为varnum*3的矩阵,
我需要在用户指定的任意两个值之间生成指定数量的随机整数(例如,12个数字都在10到20之间),然后计算这些数字的平均值。问题是,如果我要求它生成10个数字,它将只生成9个数字(显示在输出中)。此外,如果我输入的最大范围是100,最小范围是90,程序仍然会生成#,比如147,等等,这些都超过了最大范围……我是不是搞乱了随机数生成器?有人能帮忙吗?
以下是我到目前为止拥有的代码:
public class ArrayRandom
{
static Console c; // The output console
public static void main (String[
我是C语言的新手,我正在编写一个简单的代码来获取一个随机数。我试着让游戏或多或少(随机数字和玩家写一个数字),但当我在终端中启动代码时,我总是得到相同的数字。这正常吗?如果没有,我该如何修复它呢?
#include <stdio.h>
#include <stdlib.h>
int main() {
int essais = 10;
int secret;
int number;
int win = 0;
secret = rand()%100;
while (essais > 0 && win !=