随机化框中的 (x,y,z) 坐标

2023-12-27

我对 python 相当陌生,在我当前的任务中,它研究的是 3D 粒子。

问题的第一部分要求创建一个程序,将相同的、不重叠的粒子放入立方晶格中。所以我下面的代码只是迭代所有可能的组合,将其放入 XYZ 文件中。

xyz 文件的格式如下:

1000.000000
comment goes here
H 0.000000 0.000000 0.000000
H 0.000000 0.000000 1.000000
H 0.000000 0.000000 2.000000
H 0.000000 0.000000 3.000000
H 0.000000 0.000000 4.000000
H 0.000000 0.000000 5.000000
H 0.000000 0.000000 6.000000
H 0.000000 0.000000 7.000000
H 0.000000 0.000000 8.000000

我坚持的下一部分希望我做同样的事情,但以随机方式放置它们并限制我拥有的粒子数量。这是我第一部分的代码。

import itertools #will help iterating particles 

#we must set the values of diameter and Length
L=10
d=.5

#this is the intial coordinates of the first particle
x,y,z = 0,0,0
counter=0

#The particles will be spread across, the below ensures that there is no overlap of particles
with open("question1.xyz","w") as file:
    file.write("\ncomment goes here\n") #add comments into the 2nd line of the xyz file
    for x,y,z in itertools.product(range(L),repeat = 3):
        file.write('H %f %f %f\n' % (x, y, z))
        counter=counter+1

#this will put the number of particles as the first line
with open("question1.xyz") as infile:
    with open("q1Output.xyz","w") as outfile:
        for i,line in enumerate(infile):
            if i==0:
                outfile.write('%f\n'%counter)
            else:
                outfile.write(line)

我感到困惑的部分是我应该如何随机化我的粒子/坐标并确保没有重叠。

有任何想法吗?提前致谢!

**编辑:这是我到目前为止所拥有的,除了要求改变 L 并尝试最大程度地减少运行程序所需的时间之外的问题 - 不确定是什么

import random
import time

start_time=time.time() 

text_file=open("textfile.xyz","w")
text_file.write("512\n")
text_file.write("Comment goes here\n")

L=12.5
d=1

#place particles
for partciles in range(0,512)
    proxcheck=1
    while proxcheck !=2 #when the particles has been placed, proxcheck will be set=2, and the program will move onto next
    x,y,z=random.random()*L,random.random()*L,random.random()*L #random numbers for positions
    skipfirsttwolines,proxcheck=0,1;

For line in text_file
    skipfirsttwolines=skipfirsttwolines+1;
    if skipfirsttwolines>2: #in xyz file we dont look at first two lines
        proxcheck=0 #if no overlap particle will be placed
        oldvals=line.split(none)
        oldx=float(oldvals[1])
        oldy=float(oldvals[2])
        oldz=float(oldvals[3])

不知道从这里去哪里,或者我是否应该采取这种方法来确保没有重叠

@david:

这就是我的想法,有什么建议吗?

x,y,z=[],[],[]
for j in range(0,512):
    x.append(0)
    y.append(0)
    z.append(0)
xyz_line = '\n{0} {1} {2} {3}'.format('O',x[0],y[0],z[0])
f.write(xyz_line)

您可以使用代码创建一个随机点

import random

p = (random.randint(0, L), random.randint(0, L), random.randint(0, L))

但如果你需要防止两个在同一个地方,你可以这样做(设置后num_points到您想要的点数):

points = set()
while len(points) < num_points:
    p = (random.randint(0, L), random.randint(0, L), random.randint(0, L))
    if p not in points:
        points.add(p)

要将结果点写入文件:

for p in points:
    f.write("%s %s %s\n" % p)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随机化框中的 (x,y,z) 坐标 的相关文章

  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 在 Visual Studio 2012 .SDF 文件中,未替换(提交)我对原始文件的更改

    我在插入 SQL CE 数据库时遇到问题 我写了一些代码 然后当我需要数据库时 我右键单击投影 添加新项目 本地数据库 之后它让我选择一个数据模型 我选择了 数据集 这已在我左侧的服务器资源管理器下为我创建了一个数据库 并且在我右侧的解决方
  • 删除对象数组中的重复项 Javascript

    我有一个对象数组 list x 1 y 2 x 3 y 4 x 5 y 6 x 1 y 2 我正在寻找一种有效的方法 如果可能的话 O log n 删除重复项并最终得到 list x 1 y 2 x 3 y 4 x 5 y 6 我试过了 u
  • 在java中填充数字直到字符串长度为8个字符?

    我正在阅读 但找不到完整的片段 我正在寻找一个函数 它接受一个字符串并在左侧填充零 0 直到整个字符串的长度为 8 位 我找到的所有其他片段只让整数控制要填充的数量 而不是让整数控制填充的数量 直到整个字符串的长度为 x 位 在Java中
  • 为什么 Oracle 会忽略“完美”索引?

    我有这张表 create table demo key number 10 not null type varchar2 3 not null state varchar2 16 not null lots more columns 和这个
  • HiLo 还是身份?

    只是想获得一些关于主键的意见 使用身份 序列号或使用 HiLo 策略 查询高值并增加应用程序本身的低值 会更好吗 如果您将 SQL Server 2005 2008 与大型表 gt 100 万行 一起使用 您可能需要考虑this http
  • Java 变量隐藏方法重写概念

    我正在努力理解 Java 继承的变量 阴影方法和重写概念 Case 1 class Car public int gearRatio 8 public String accelerate return Accelerate Car clas
  • 链接某些 Windows API 时出现链接器错误

    我的系统中有一个 makefile 项目 最近 我添加了一些使用以下 Windows API 的新函数 RegOpenKeyEx RegEnumKeyEx RegCloseKey RegGetValue 为了拥有这些 APIS 我添加了wi
  • 尝试运行 ts-node 脚本时出现未知文件扩展名“.ts”错误

    我正在尝试运行在带有两个 ts 文件的常规文件夹中创建的脚本 一份包含脚本 另一份包含运行脚本的辅助函数 我还导入了更多东西 例如 axios 或表单数据 问题是 当我尝试使用 ts node 运行脚本时 节点脚本 ts 出现如下错误 Ty
  • 定期JavaFX服务

    我想从我的 JavaFX 应用程序定期执行任务 该任务从远程流中提取数据 虽然我知道我可以使用计时器 如下所示 JavaFX周期性后台任务 https stackoverflow com questions 9966136 javafx p
  • 在 iOS 中获取 iPhone 位置,无需将首选项“定位服务”设置为“开”

    我正在写一个类似于的守护进程克里斯 阿尔瓦雷斯守护进程 http chrisalvares com blog 7 creating an iphone daemon part 1 我想在未经用户许可的情况下在后台获取设备位置 如果Locat
  • 使用 Bitbucket Pipelines 从 docker 实例通过 SSH 连接到临时计算机

    使用新的 Bitbucket Pipelines 功能 我如何从它启动的 docker 容器通过 SSH 访问我的暂存盒 我的管道中的最后一步是 sh在暂存上部署必要代码的文件 但是由于我的暂存盒使用公钥身份验证并且不知道 docker 容
  • F# 交互式中的 Windows UI(UWP 或 8.1)

    通过引用默认的 WPF DLL 使用纯代码 WPF 可以轻松完成任何操作 r PresentationCore dll r PresentationFramework dll other DLLs r WindowsBase dll let
  • 使用Python从屏幕捕获视频数据

    有没有办法使用Python 也许使用OpenCV或PIL 连续抓取整个或部分屏幕的帧 至少以15 fps或更高的速度 我见过用其他语言完成的 所以理论上它应该是可能的 我不需要将图像数据保存到文件中 实际上 我只是希望它输出一个包含原始 R
  • Typescript 能够进行简单的函数组合吗?

    Typescript 能够进行简单的函数组合吗 我写出了以下用于测试的 compose map 和 filter 的基本实现 下面先设置类型和功能 然后再实现 javascript 似乎没问题 但打字稿显示误报compose用来 具体来说
  • 使用Remoting时如何在.NET3.5中使用App.config而不需要在App.config中添加Remoting相关配置?

    我正在尝试将 App config 用于托管远程处理并在 NET3 5 中开发的 Windows 服务应用程序 在该 App config 中 我想保留一些将在整个解决方案中使用的值 我没有向其中添加远程关系配置内容 但是在运行应用程序时
  • TypeORM 中 .limit() 和 .take() 之间的区别

    我对具有相似目的的不同 TypeORM 方法感到困惑 来自 TypeORM 文档 take 分页限制 设置要获取的最大实体数 skip 分页偏移量 设置要跳过的实体数量 我不太理解 分页限制 偏移 的含义 但是 不幸的是 我找不到任何有关区
  • 如何在FMX2中直接访问TBitmap像素(TBitmap.ScanLine替换)?

    The FMX Types TBitmap http docwiki embarcadero com Libraries XE2 en FMX Types TBitmap类有ScanLine http docwiki embarcadero
  • 如何设计反应制表符表的样式?

    任何人都可以向我提供一些有关如何设计反应制表符表样式的信息吗 我一直在尝试更改标题颜色 边框等 但徒劳无功 我只在文档中找到类名 例如className table bordered table striped 但这对我没有帮助 我想创建自
  • 如何让 Monodevelop 重新使用英语作为其语言

    我不知道这是怎么发生的 但是当我启动 Monodevelop 时 菜单突然以英语以外的语言出现 我尝试重新安装应用程序以及手动删除库下其他目录中的工件 没有运气 重新安装后 它仍然以另一种语言加载 您可以在选项 首选项对话框下更改语言 对我
  • 随机化框中的 (x,y,z) 坐标

    我对 python 相当陌生 在我当前的任务中 它研究的是 3D 粒子 问题的第一部分要求创建一个程序 将相同的 不重叠的粒子放入立方晶格中 所以我下面的代码只是迭代所有可能的组合 将其放入 XYZ 文件中 xyz 文件的格式如下 1000