algorithm - 随机分配数量
问题描述
我正在开始一个模拟物体爆炸的项目。我想随机分配爆炸成碎片的物体的总质量。例如,如果物体的质量为 3 公斤并分成 3 个碎片,它们的质量可能分别为 1、0.5、1.5。我想用能量和其他东西做同样的事情。另外,我想控制使用的随机分布。
我想我可以简单地通过生成一个随机数来做到这一点,以某种方式将它与我想要分配的数量联系起来,并在减去总池的同时继续这样做。这种方法的问题在于,乍一看它似乎不是很有效,而且它可能会给固定数量的片段带来问题。
所以问题是,是否有算法或有效的方法来做到这一点?一个例子将被彻底理解。
解决方案
对于这个问题,我会尝试的第一件事是:
- 生成 0 到 1 之间的 N-1 个随机数
- 对它们进行排序
- 将它们提升到x次方
- 将 0、连续数字和 1 之间的 N 个差乘以您要分配的数量。当然,所有这些差异加起来为 1,因此您最终将准确分配目标数量。
这种方法的一个很好的优点是您可以调整参数x以获得美观的块分布。自然爆炸不会产生块大小的均匀分布,所以你会想玩这个。
推荐阅读
- .net-core - CS0120 非静态字段、方法或属性“Startup.Configuration”需要对象引用
- python - ImportError:导入 PCA 时无法导入名称“LatentDirichletAllocation”
- json - 比较两个嵌套的 json 文件并向用户显示更改的确切位置以及使用 Python 的 json 文件?
- flutter - Flutter VSCode 和 Nox Emulator 无法连接
- python - 如何修改日期字符串的格式?(Python/Excel)
- c# - 如何在 gridview 行数据绑定中基于当前 HeaderName 日期将“缺席”文本保留在“空”单元格的位置
- android - 如何使 TimeLine 像 Instagram 一样具有多个图像和视频并自动播放?
- javascript - 在 Typescript React 组件中为 renderAs 属性设置正确的类型?
- javascript - 如何复制文本(
) 以最简单的方式使用 jQuery 单击图像上的剪贴板?
- mysql - sql中的递归标签层次结构检索