![](/style/images/good.png)
![](/style/images/bad.png)
求问一个算法问题
source link: https://www.v2ex.com/t/904334
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
有一组三维坐标数据 [{x, y, z}, {x, y, z}, ...], 现在需要随机生成一个坐标 且不能和已有坐标重复
x y z 最大值 = 100
请教有什么算法可以实现这个需求吗?
![]() |
momocraft 6 小时 23 分钟前 如果坐标是整数: 把原来的坐标整成带排序的数据结构,然后在“空洞”里随机生成就不会重复
|
![]() |
ianEros 6 小时 14 分钟前 我想到的也是提前把未使用的坐标存起来,然后在这个集合里面随机,如果最大值 100 ,size 最大值也就 1 ,000 ,000
|
zxCoder 6 小时 13 分钟前 随机就是一种算法,随机算法
|
![]() |
shyrock 6 小时 3 分钟前 感觉跟 hash 的思路有点像。
OP 能说一下问题的真实背景吗? |
xuanzizhe 5 小时 24 分钟前 想到的最原始的方法就是先把坐标算出来存在数组里,然后取的时候每次从里面删一条,没啥算法可言了,相信应该有更好的方法勒~ https://reurl.cc/gQpdNX
|
![]() |
vace 5 小时 16 分钟前 整数的话 xyz 直接转固定长度二进制就行了
0b1100100 0b1100100 0b1100100 => 0b110010011001001100100 也就:0 ~ 1651300 ,随机生成点数字的工作。 |
![]() |
xuanbg 5 小时 14 分钟前 建立一个 size 为 100 的 3 维空间,就是一个[100,100,100]的 3 维数组并初始化好。然后随机在这个 3 维空间中取一个就行空的点就行了。
|
Tanix2 5 小时 12 分钟前 via iPhone 从已有坐标构建哈希表,随机生成坐标,通过比较哈西判断是否重复,重复则重新随机生成。
|
![]() |
shiji 5 小时 9 分钟前 via iPhone 评论区真是精彩啊。 不看不知道,一看吓一跳。
|
![]() |
Jakarta 4 小时 5 分钟前 via Android 原始坐标数据转成"到原点距离: [坐标,坐标,....]"的哈希,随机生成的坐标也计算一下到原点的距离,如果距离存在,就进一步比较坐标值。
不知是否可行? |
wxf666 3 小时 45 分钟前 如果取值范围是 0 ~ 100 ,一个三维坐标可以映射到一个 0 ~ (101^3-1) 的整数,后面就是生成不重复的随机整数就好
如果换成 bitmap 存储,大概只需 16 KB 内存即可? |
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK