天道酬勤,学无止境

random

泊松分布后的随机数生成(Random number generation following a Poisson distribution)

问题 我在 Python 中准备了一个代码来对光束结构进行随机采样并寻找光子。 光子随时间的演化遵循泊松分布。 我正在模拟的梁结构有 936 个仓,前 900 个仓的电荷为 0.62 nC,然后是 36 个仓的间隙。 每个 bin 为 2 ns,这意味着光束的总旋转周期(完成一圈同步加速器)为 1.872 微秒(936 个 bin 时间 2 ns)。 我们寻找在每个 bin 中获得光子的概率。 速率参数(获得光子的概率)由输入计数率(定义为 fr)和时间箱大小 2ns(定义为 dt)的乘积给出。 由于 fr*dt 的乘积非常小(大约为 0),大多数 bin 将没有光子,泊松分布将在 0 附近达到峰值。确实需要对几千个光束结构进行采样才能获得准确的结果。 在 MATLAB 中,我模拟了 10,000 个梁结构以获得有意义的结果。 下面是我的python代码。 我在代码中将一个梁结构定义为 y。 为了重复y几次,我定义了y1(重复梁结构5次)或y2(重复100次)等等。 在代码的第 1 节中,我循环了 y 的 936 个 bin,并确保具有零电荷的 bin(最后 36 个 bin)不会有助于光子的产生。 我在 y 的 936 个 bin 上循环,并按照 Poisson 分布进行随机抽样,其中 fr*dt 的平均值定义为 spkt。 然后我重塑了spkt

2022-01-16 17:54:45    分类:技术分享    python   python-3.x   numpy   math   random

临时修复后恢复为随机种子的最佳方法是什么?(Best way to revert to a random seed after temporarily fixing it?)

问题 这是“取消种子”随机数生成器的唯一方法: np.random.seed(int(time.time())) 如果你有一些你想在一个循环中重复的代码(例如一个测试)和你想在每个循环中随机的其他代码,你如何在设置后将种子“重置”为随机数生成器? 下面的代码说明了这个问题: import numpy as np def test(): np.random.seed(2) print("Repeatable test:", [np.random.randint(10) for i in range(3)]) for i in range(4): print("Random number:", np.random.randint(10)) test() Random number: 8 Repeatable test: [8, 8, 6] Random number: 2 Repeatable test: [8, 8, 6] Random number: 2 Repeatable test: [8, 8, 6] Random number: 2 Repeatable test: [8, 8, 6] 期望的结果:我希望随机数在每个循环中都是随机的。 如果这是唯一的方法,我很乐意导入时间模块,但我认为可能有更简单、更强大的方法。 (根据这篇帖子,您无法获取当前种子) 回答1 你走错了路。

2022-01-16 16:01:51    分类:技术分享    python   numpy   random   seed

子进程生成与父进程相同的“随机”数(Child processes generating same "random" numbers as parent process)

问题 我在使用concurrent.futures和np.random进行模拟时遇到了一些问题。 例子: import numpy as np from concurrent.futures import ProcessPoolExecutor, as_completed from time import sleep def calc_g(): sleep(1) u = np.random.uniform() print u futures = {} with ProcessPoolExecutor() as executor: for i in range(0,10): job = executor.submit(calc_g) futures[job] = i for job in as_completed(futures): job.result() 我在这个模拟中的结果是: python teste.py 0.590820857053 0.590820857053 0.590820857053 0.590820857053 0.890384312465 0.890384312465 0.890384312465 0.890384312465 0.391709923204 0.391709923204 如果我删除函数calc_g()中的sleep函数,结果似乎更加随机:

2022-01-16 15:57:33    分类:技术分享    python   numpy   random   multiprocessing

SQL Server 列的默认随机 10 个字符串值(Default random 10 character string value for SQL Server column)

问题 我的表 [guests] 中有一个rndm列。 现在,对于表的字段Default value or Binding ,每当插入新行时,我想自动将 10 个字符的随机字符串作为默认值插入到该列中。 此随机字符串可能不包含特殊字符,仅包含a-zA-Z0-9中的字符。 实现这一目标的最佳方法是什么? 明确一点:我不想在我的 .NET 代码中生成这个随机字符串,我希望它在 SQL Server 中生成。 我想将此字符串生成直接粘贴到表的Default value or Binding字段中,因此不是单独的 SQL 语句。 因此,例如,当将getdate()粘贴到字段Default value or Binding时,它会起作用。 回答1 扩展 Deigo Garbar 已经提出的建议。 如果要将表达式用作表中的默认值,则需要将此表达式放入函数中。 但问题是 UDF 函数不允许您在其中使用 NEWID() 函数,它会抱怨不能在 UDF bla bla 中使用非确定性函数...... 一种解决方法是首先创建一个视图,该视图只需调用此表达式,然后在您的函数中使用该视图,然后将该函数用作您的表的默认值。 看法 CREATE VIEW dbo.vw_Function_Base AS SELECT substring(replace(convert(varchar(100), NEWID())

2022-01-16 15:10:56    分类:技术分享    sql-server   random   default-value   sql-server-2014

How do I use random numbers in C#?

I'm working on Pong in C# w/ XNA. I want to use a random number (within a range) to determine things such as whether or not the ball rebounds straight, or at an angle, and how fast the ball moves when it hits a paddle. I want to know how to implement it.

2022-01-16 15:07:32    分类:问答    c#   random   xna

OpenAI 环境(健身房)应该如何使用 env.seed(0)?(How should OpenAI environments (gyms) use env.seed(0)?)

问题 我创建了一个非常简单的 OpenAI 健身房 (banana-gym) 并想知道是否/如何实现env.seed(0) 。 例如,请参阅 https://github.com/openai/gym/issues/250#issuecomment-234126816。 回答1 在最近的一次合并中,OpenAI gym 的开发者改变了env.seed()的行为,不再调用env._seed()方法。 相反,该方法现在只是发出警告并返回。 我认为如果您想使用此方法设置环境的种子,您现在应该覆盖它。 回答2 env.seed()函数的文档字符串(可在此文件中找到)提供了以下文档,说明该函数应执行的操作: Sets the seed for this env's random number generator(s). Note: Some environments use multiple pseudorandom number generators. We want to capture all such seeds used in order to ensure that there aren't accidental correlations between multiple generators. Returns: list<bigint>: Returns the list of

2022-01-16 14:34:27    分类:技术分享    random   random-seed   openai-gym

在 Python 中随机播放一个长列表的次数甚至更长(Shuffle a long list an even longer number of times in Python)

问题 我想多次改组一个长序列(比如它有超过 10000 个元素)(比如 10000 个)。 在阅读 Python Random 文档时,我发现以下内容: 请注意,即使对于较小的 len(x),x 的排列总数也会迅速增长,大于大多数随机数生成器的周期。 这意味着永远无法生成长序列的大多数排列。 例如,长度为 2080 的序列是在 Mersenne Twister 随机数生成器的周期内可以拟合的最大序列 我有两组(可能更多),每组都有很多值。 我要洗牌的序列是所有可用值的列表,无论组如何。 我担心的是该注释暗示我需要的随机播放可能不是由 random.shuffle() 函数提供的。 我想过一些解决方法: 在某些迭代中多次初始化随机数生成器(使用 random.seed())。 这样,排列是否超过周期并不重要,因为不同的种子会得到不同的结果。 使用 sample(range(length of sequence), k=size of a group) 获取随机索引,然后使用这些索引在每个组内进行索引。 这样,由于随机数生成器的周期,我可能不会用完排列。 我的任何替代方案都有帮助吗? 非常感谢! 回答1 好10,000! ~= 10^36,000 10,000! ~= 10^36,000这是很多可能的排列。 您能做的最好的事情就是深入研究您的操作系统或硬件如何累积“真正随机”的位。

2022-01-16 14:33:22    分类:技术分享    python   algorithm   python-3.x   random   montecarlo

如何从数组中创建一个随机数(How to create a random number from array)

问题 我正在做一个 C# 编码。 在我的编码中,我需要生成一个随机的数字列表。 通常,如果我们创建一个随机数,我们需要选择数字的范围。 但是对于我的情况,我需要从数组中创建一个随机数。 任何的想法? 我正在使用 XAML 和 C#。 private void Submit_Click(object sender, RoutedEventArgs e) { int[] numbers = new int[5] {32, 67, 88, 13, 50}; Random rd = new Random(); //int myNo = rd.Next(numbers[])? } 额外:每次我单击提交按钮时,都会选择一个随机数[] 。 我怎样才能确保号码不重复。 例如:第一次点击,myNo = 67; 第二次点击,myNo = 50; 第三次点击,myNo = 88; 第 4 次点击,myNo = 32; 第 5 次点击,myNo = 13。谢谢! 回答1 您可以创建一个随机数来表示数组中的索引。 从该随机索引访问数组元素,您将获得您的数字,因为数组中的所有数字似乎都是不同的。 int[] numbers = new int[5] { 32, 67, 88, 13, 50 }; Random rd = new Random(); int randomIndex = rd.Next(0, 5)

2022-01-16 13:58:43    分类:技术分享    c#   random

forming random pairs from a list (sort of...)

Skip to the last edit I have a list of Person objects and I need to pair them off randomly with a randomize_pairs function, each Person object has a property target of who they are paired with. My constraints are that no-one can pair with themselves (duh) and they shouldn't be paired with the same person twice. I got this working by making a temporary list and popping people off if the constraints were satisfied but I'm sure there is a cleaner/better/more pythonic way of doing this. Anyone know? edit I used the word "pair" a lot in this question but that was the wrong word. This is for a game

2022-01-16 13:52:16    分类:问答    list   random   python

MIPS 汇编 - 随机整数范围(MIPS assembly - random integer range)

问题 您好,我正在尝试使用随机整数范围,而我得到的值超出了我设置的值。 例如: sw $a0, 0($s0) li $a0, 1000 li $a1, 3500 li $v0, 42 #random 所以我只希望它是 1000-3500 之间的随机数,但它给了我任何随机数。 你能帮我理解我的错误在哪里吗? 回答1 $a0是随机种子,而不是下限。 您应该将$a1设置为2501以生成 0-2500 的随机数,并将结果加 1000。 sw $a0, 0($s0) li $a1, 2501 li $v0, 42 #random add $a0, $a0, 1000

2022-01-16 13:29:05    分类:技术分享    assembly   mips   random