- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在用 python 编写一个简单的程序来模拟 1 + 1 维 SU(2) yang mills 理论。对于 SU(2) 的情况,存在用于更新链接变量的特定热浴算法。但是,为了实现此算法,我需要生成一个随机实数 X,以便 X 根据 P(x) = sqrt(1-X^2)*e^(k*X)
,其中 k 是从负无穷大到无穷大的实数。
幸运的是,存在一种根据所述分布生成 X 的算法。利用我在 python 方面的有限技能,我实现了这样一个算法。这是代码。我在这里只使用 numpy。
def algorithm(k):
count = 0
while 1 != 0:
r1,r2,r3,r4 = np.random.uniform(low=0,high=1),np.random.uniform(low=0,high=1),np.random.uniform(low=0,high=1),np.random.uniform(low=0,high=1)
L1 = -1/(2*k)*(np.log(r1)+np.log(r3)*np.cos(2*np.pi*r2)**2)
if r4**2 <= 1 - L1:
X = 1 -2*L1
break
else:
count = count + 1
continue
print(count)
return X
基本上,如果我们在 0 到 1 的区间内取三个均匀分布的随机数,我们可以生成一个随机变量 l1,它是这三个随机数的函数。
如果 1 - L1 大于或等于第四个随机数的平方(均匀分布在 0 到 1 区间),我们接受这个值 L1。否则我们回到开头并重新做一遍。我们这样做,直到我们接受 L1 的值。在我们接受 L1 之后,我们将 X 计算为 1 - 2*L1。该算法确保 X 服从所需的分布。
在我的程序中,我将不得不生成一个 X 的二维数组。这在我当前的实现中非常慢。所以这是我的问题;有没有更简单的方法使用任何预设的 numpy 包来做到这一点?如果不存在这样的方法,是否有一种方法可以将该函数矢量化以生成随机 X 的二维点阵,而无需简单地使用 for 循环对其进行迭代?
最佳答案
我不知道是否存在可以准确返回您想要的分布的内置函数,但我相信对您的代码进行矢量化应该不难。只需使用 size
parameter of the uniform
function 生成 r1
、r2
、r3
和 r4
向量正如沃伦所提到的那样并执行这些操作。正如 DSM 所提到的,您也可以只使用元组作为 size
参数,并通过一次调用完成所有操作。
您可以保留循环并以某种方式重复操作,直到您有 N
值,但我只是删除循环并仅保留满足条件的数字。这会产生少于 N
个数字,但编码起来很简单。
这样的东西可能是你想要的:
def algorithm_2(k, N):
r1,r2,r3,r4 = np.random.uniform(low=0,high=1, size=(4,N))
L1 = -1/(2*k)*(np.log(r1)+np.log(r3)*np.cos(2*np.pi*r2)**2)
reduced_L1 = L1[r4**2 <= 1 - L1]
return 1-2*reduced_L1
运行它给出:
>>> algorithm_2(1, 50)
array([-0.21110547, -0.70285195, 0.0475383 , -0.20860877, -0.07776909,
-0.21907097, 0.70566776, 0.3207524 , 0.71130986, 0.45789795,
0.15865965, -0.13757757, 0.04306286, 0.46003952])
如果您想要一个始终准确返回 N
元向量的函数,您可以编写一个包装器来不断调用上述函数,然后连接数组。像这样:
def algorithm_3(k, N):
total_size =0
random_arrays = []
while total_size < N:
random_array = algorithm_2(k, N)
total_size += len(random_array)
random_arrays.append(random_array)
return np.hstack(random_arrays)[:N]
关于python - 格子 su(2) 规范理论和 python 中的随机数生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51715173/
简单的问题,有什么区别 su oracle 和 su - oracle 我不确定 - 在这两个命令中的意义是什么。 更新: 执行 su oracle 后,尝试了 which sqlplus 但无法识别
我正在尝试找出一些给我的代码。有人能告诉我这是什么意思吗? process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(p
我正在尝试将自己设置为 root,一旦我在终端中输入 su - root 它就会给我一个错误提示/bin/su: Permission denied 所以我检查了权限在那个文件中 -rwsr-x---
当我尝试从具有系统权限的程序运行 su 命令时,我在 stderr 上返回了这个错误: uid 1000 not allowed to su 我将共享 uid 设置为 android.uid.syst
我想用非 root 用户启动一个容器,但我不能修改原始 Dockerfile,或者我知道我可以做一些像 Run useradd xx 然后 User xx 在 Dockerfile 中实现。我现在正在
我正在尝试编写一个将运行以下命令的脚本: sudo su runmqsc_result=`su -c "runmqsc QMGR 或者,您可以使脚本只能由 root 编写,并将以下内容添加到 /et
当我使用 adb 访问我的设备时(Android 4.4.2 直接来自制造商及其定制的 rom - 它不是常规设备 - 它内置了二维条码扫描仪)它直接进入了一个 # 我已经read 意味着我有 roo
我正在编写一个 bash 脚本来扫描多台 linux 机器以查看它是否符合组织的标准: grep "sulogin" /etc/inittab ~:S:wait:/sbin/sulogin 我正在使用
我有一个 bash 脚本,需要在不同的用户下运行几个命令。我想使用 su 执行此操作,但如果没有密码提示,我无法自动 su。 运行脚本的用户将是 centos 中的 apache(因此不是真实的用户帐
我想用 su 在一个命令行中更改用户 echo password | su user 但这行不通。还有其他的可能性吗?最良好的祝愿 最佳答案 首先:问问自己脚本是否真的有必要知道密码。 sudo 和
passwd命令 passwd 命令用来修改您的密码。 语法: 语法是 passwd [命令开关] 命令开关: -a 显示密码属性的所有项目。
我有一个 linux 用户 (user2),它已设置为 shell /usr/sbin/nologin(以阻止登录)。不,当我尝试使用 sudo su user2 切换到该用户时,我得到的信息是该帐户
今天早上我犯了一个小错误。 我想更改 wordpress 网站目录的所有者,我命令如下。 sudo chown -vR :theuser / var/wwwwordpress/ 但是这个命令是错误的。
如果我运行这个命令: su -l otheruser -c 'strace /usr/lib/systemd/systemd --user 2> /tmp/su.err' 失败了: Failed to
所以我无法让 su 命令在终端上工作。我所做的就是输入“su”并按 Enter 键,它会要求输入密码,然后我输入当前登录的用户密码。它总是给出这个错误。我发誓这以前有用,不知道发生了什么。 su: S
我正在使用流分析来实现简单的数据传递场景。 作业具有多个 SQL Server 输出(三个)和一个 EventHub 输入。事件数量很少。问题是我的 SU 利用率不断增加。我的临时解决方案是每天重新启
我是一名关于 Vagrant 的新生。我刚刚发现,当我在 Vagrant 监督的盒子里时,我可以通过“sudo su -”更改为 root,而无需输入密码。 奇怪的是,我检查了“/etc/sudoer
我有一个程序,该程序将使用密码作为输入,然后执行 shell 程序以在UNIX中执行“su”(切换用户)命令。但是,我不知道如何将password变量传递给UNIX su命令。我必须为此使用的语言非常
Process process = Runtime.getRuntime().exec("su"); 在 上运行上述命令时 Root 电话一切正常 但是当我在 上尝试相同的代码时无根设备导致内存泄漏,
我使用 boost 1_65_1 并尝试在 MacOS 上运行一个进程。我的主要进程以 root 身份运行我需要以普通用户身份启动子启动。我的命令行:su user_name -c "full 可执行
我是一名优秀的程序员,十分优秀!