问题标签 [random]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1400 浏览

assembly - 如何从时钟中获取随机生成器的种子,在汇编程序中编程

编译器,TASM 5

架构 x86。

对于随机数生成器算法,将时钟作为种子。


我找到了解决方案:

0 投票
6 回答
1718 浏览

c++ - 在 POSIX 上产生随机双精度的最佳方法是什么?

我想在 [0.0, 1.0) 范围内得到均匀分布

如果可能,请让实现使用来自/dev/urandom 的随机字节。

如果您的解决方案是线程安全的,那也很好。如果您不确定,请指出。

查看我在阅读其他答案后想到的一些解决方案。

0 投票
13 回答
19303 浏览

arrays - 你如何有效地生成一个介于 0 和上限 N 之间的 K 个非重复整数的列表

该问题提供了所有必要的数据:在给定区间[0,N-1]内生成K个非重复整数序列的有效算法是什么。如果K很大并且足够接近N,那么简单的算法(生成随机数并在将它们添加到序列之前查找它们以查看它们是否已经存在)非常昂贵。

有效地从链表中选择一组随机元素中提供的算法似乎比必要的复杂,并且需要一些实现。我刚刚发现另一种算法似乎可以很好地完成这项工作,只要您知道所有相关参数,一次通过。

0 投票
9 回答
32161 浏览

c++ - 地图中的随机元素

从地图中选择随机元素的好方法是什么?C++。据我了解,地图没有随机访问迭代器。关键是很长很长,地图人口稀少。

0 投票
13 回答
460382 浏览

objective-c - 在 Objective-C 中生成随机数

我主要是Java头,我想要一种方法来生成0到74之间的伪随机数。在Java中我会使用该方法:

我对关于种子或真正随机性的讨论不感兴趣,只是你如何在 Objective-C 中完成相同的任务。我搜索了谷歌,似乎有很多不同且相互矛盾的信息。

0 投票
6 回答
692 浏览

algorithm - 在没有数组的情况下迭代 shuffled [0..n)

我知道一些如下工作的例程:

X n+1 = 例程(X n , 最大值)

例如,类似 LCG 生成器的东西:

X n+1 = (a*X n + c) mod m

此生成器中没有足够的参数化来生成每个序列。

梦想功能:

X n+1 = 例程(X n , max, 排列数)

该例程通过索引参数化到所有排列的集合中,将返回序列中的下一个数字。序列可能任意大(因此存储数组和使用阶乘数是不切实际的。

如果做不到这一点,是否有人拥有指向类似函数的指针,这些函数要么是无状态的,要么具有任意“最大值”的恒定状态量,这样他们就可以迭代一个混洗列表。

0 投票
5 回答
3586 浏览

sql - 在 MS SQL Server 2005 中使用 RAND() 时我做错了什么?

我正在尝试从一张小桌子中随机选择 10% 的样本。我以为我会使用 RAND() 函数并选择随机数小于 0.10 的那些行:

但我很快发现 RAND() 总是返回相同的数字!让我想起了这部xkcd 卡通

OK,没问题,RAND函数取一个种子值。我将定期运行此查询,如果我在不同的日子运行它,我希望它给出不同的结果,所以我使用日期和唯一行 ID 的组合来播种:

我仍然没有任何结果!当我展示 RAND 返回的随机数时,我发现它们都在一个狭窄的范围内。从 RAND 获取随机数似乎需要您使用随机种子。如果我一开始就有随机种子,我就不需要随机数了!

我已经看到了与此问题相关的先前讨论:

SQL Server 随机排序
如何在 SQL 中请求随机行?

他们不帮助我。TABLESAMPLE 在页面级别工作,这对于大表来说非常有用,但对于小表则不适用,而且看起来它适用于 WHERE 子句之前。带有 NEWID 的 TOP 不起作用,因为我不提前知道我想要多少行。

有人有解决方案,或者至少有提示吗?

编辑:感谢 AlexCuse 提供适用于我的特殊情况的解决方案。现在到更大的问题,如何让兰德表现?

0 投票
6 回答
14213 浏览

c++ - 用于程序内容的快速伪随机数生成器

我正在寻找一个伪随机数生成器,当它在生成每个数字之前被赋予种子时,它将专门用于快速工作。到目前为止,我见过的大多数生成器都假设您设置一次种子,然后生成一长串数字。到目前为止,唯一看起来与我看到的有点相似的是 Perlin Noise,但它生成的数据过于“平滑”——对于类似的输入,它往往会产生类似的结果。

生成器的声明应该类似于:

或者:

我认为拥有良好的 RandomNumber1 就足够了,因为可以通过散列其输入并将结果传递给 RandomNumber1 来实现 RandomNumber3,但我编写了第二个原型,以防某些实现可以使用独立输入。

此生成器的预期用途是将其用于程序内容生成器,例如通过将树木放置在网格中并确定每个位置的随机树种和随机空间偏移来生成森林。

生成器需要非常高效(低于 500 个 CPU 周期),因为在渲染过程中会实时大量创建程序内容。

0 投票
2 回答
1537 浏览

sql - SQL Server 2005 中的多个随机值

我需要在 SQL Server 2005 下生成多个随机值,不知何故这根本行不通

首选的解决方法是什么?

0 投票
13 回答
15914 浏览

unit-testing - 如何对伪随机数生成器进行单元测试?

我有一个要进行单元测试的伪随机数生成器 (PRNG) 类。有两种方法:

  1. 编写一个需要大量样本的测试用例,并测试它们是否分布正确。这种方法可能会导致测试用例的执行时间相当长;
  2. “手动”计算一小部分样本并验证 PRNG 算法是否重现它。这种方法可能会导致在不被注意的情况下生成非随机序列;

我想说第一种方法不是真正的单元测试,因为它不执行生成器的白盒测试,但另一方面它正确地测试了类的责任。第二种方法更像是一个真正的单元测试,专注于算法,但它并没有提供太多的证据来证明类是否履行了它的职责。

你更喜欢哪种方法,为什么?