V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sillydaddy  ›  全部回复第 69 页 / 共 83 页
回复总数  1650
1 ... 65  66  67  68  69  70  71  72  73  74 ... 83  
2021-01-26 22:54:29 +08:00
回复了 susanzhou 创建的主题 奇思妙想 一天一年(历史内容创业)
“这样至少能写 10 年”,哈哈,好主意
2021-01-25 11:11:57 +08:00
回复了 Vlings 创建的主题 奇思妙想 寻程序员极客
@Vlings 拜托!! 不要什么都发“奇思妙想”节点!!

@Livid 建议挪动节点
2021-01-21 11:46:02 +08:00
回复了 masker 创建的主题 生活 好模糊的返乡政策
@IGJacklove 哈哈,不粘锅! 你为什么这么有创意呢
2021-01-19 15:05:17 +08:00
回复了 kaiki 创建的主题 问与答 如何把一个数字 x 随机分成 y 个数字,这些数字≥a 且≤b
@kaiki
@chengfeng1992
@XiaoxiaoPu
@JeffGe
@fbxshit

想了一下,找到了一个我认为正确的方法。
但基本原理很简单,就是类似前面提到的,在多边形内随机采样取点。

先看一下为什么发红包跟多边形取点会关联起来,举例来说,发红包的条件可以表示为:
x+y+z=11,(给 3 个人发 11 元红包)
x>=2, x<=8, y>=2, y<=8, z>=2, z<=8,
(给每个人发的红包在 2 和 8 之间)

用几何的观点来看,这几个条件表示的是,使用一个立方体(x,y, z 的范围都在 2 ~ 8 之间),去截取一个平面,平面的方程为 x+y+z=11 。平面被立方体截取的部分(在立方体内的),就是满足题目要求的解。然后求一个随机解就变成了在被截取的平面上随机采样采点。

如果把这个图形画出来,会发现平面被立方体所截得的图形是一个等边三角形。三个顶点分别是(2,2,7),(2,7,2),(7,2,2)

所以,现在的问题变成了:已知一个三角形(凸多边形),怎么才能做到均匀采样其内部的点?
这个就要感谢凸集的美好性质了:凸集内部的任何一点都可以唯一表示成凸集顶点的线性组合。
假设三角形的三个顶点分别是 P0, P1, P2,那么三角形内部的任一点,可以唯一表示为 a*P0+b*P1+c*P2,其中 a+b+c=1 。
所以要想随机采样三角形内部的点,只要随机取 a,b,c 这三个数,保证和为 1 即可。

上面是 3 维的简单情形,如果发红包给更多的人,就变成了更高维的,但原理是一样的。原来的平面变成了高维平面,原来的立方体变成了高维立方体。关键是求出立方体在平面上截得的顶点。找到所有的顶点后,对这些顶点线性组合就 ok 了。
2021-01-19 14:09:32 +08:00
回复了 kaiki 创建的主题 问与答 如何把一个数字 x 随机分成 y 个数字,这些数字≥a 且≤b
@chengfeng1992,#28,采样不均匀的话,把结果重排还是不均匀吧。


@cassyfar,#37,最小值最大值只是一个约束吧,并不一定要求一定要取到最小或最大值。
2021-01-18 17:57:45 +08:00
回复了 kaiki 创建的主题 问与答 如何把一个数字 x 随机分成 y 个数字,这些数字≥a 且≤b
@chengfeng1992
我前面说的主要不是最后一个值越界的问题,而是结果不随机的问题。
你可以运行一下自己的程序,多次运行以后,计算出各个人得到的红包平均数,看是不是相等的。如果不相等说明红包算法随机性有问题。

我可以举个肉眼可见的例子,
x=11,y=3,a=1,b=5,意思就是 11 元红包分给 3 个人,最小 1 元,最大 5 元。
简单看一下 3 个人分得的红包分布
1,5,5
2,4.5,4.5
3,4,4
4,3.5,3.5
5,3,3
可以看出来,后面抽红包的两个人,他们的平均期望值是 4,而第一个人的期望只有 3 。
这说明这种算法不是均匀随机的。
2021-01-18 15:32:03 +08:00
回复了 kaiki 创建的主题 问与答 如何把一个数字 x 随机分成 y 个数字,这些数字≥a 且≤b
@sillydaddy
@XiaoxiaoPu
好吧,那篇文章我也看不懂!!
但楼上的方法都是错的,这点我可以坚持。
2021-01-18 15:15:14 +08:00
回复了 kaiki 创建的主题 问与答 如何把一个数字 x 随机分成 y 个数字,这些数字≥a 且≤b
贴个现成的答案吧。楼上的方法都不对。

“生成满足约束的随机数的方法”
https://blog.csdn.net/maintony/article/details/88540320
2021-01-18 14:59:36 +08:00
回复了 kaiki 创建的主题 问与答 如何把一个数字 x 随机分成 y 个数字,这些数字≥a 且≤b
@chengfeng1992 取 max 的过程有点问题吧,感觉这样的话算法不是随机的了。类比我上面举的例子,给定一个 2d 上的多边形,要求在内部随机取点。这时如果先随机取 x,再根据 x 的值,在 x 对应的 y 范围内随机取 y,会导致结果不随机。
2021-01-18 14:55:28 +08:00
回复了 kaiki 创建的主题 问与答 如何把一个数字 x 随机分成 y 个数字,这些数字≥a 且≤b
想了下,感觉这道题目应该叫,"约束空间范围的随机采样",就类似于要求在一个多边形内部,随机取一个点。

坐等高手。
2021-01-18 14:43:10 +08:00
回复了 kaiki 创建的主题 问与答 如何把一个数字 x 随机分成 y 个数字,这些数字≥a 且≤b
@sillydaddy 我说的好像有问题。。不能保证所有段的和等于总和
2021-01-18 14:39:52 +08:00
回复了 kaiki 创建的主题 问与答 如何把一个数字 x 随机分成 y 个数字,这些数字≥a 且≤b
在 0 ~ x 范围内,取 y-1 个随机数,将 x 划分成 y 段,从中取出一段,该段长度符合大于等于 0 小于等于 d ;
从 x 中减去已经取的段,迭代上面的过程,每次迭代时分段数目要减 1 。

把 a ~ b 的范围,转换成上面算法要求的 0 ~ d 即可。
2021-01-15 17:06:17 +08:00
回复了 YadongZhang 创建的主题 职场话题 955 也没法 WLB
说缩写有理的,拜托去 Google 上面,以关键词 “how to make a WLB” “how to maitain WLB” 搜索一下,看看结果里面哪怕有**一个**只写缩写的吗?都是写的 work-life balance 。

国外的网站尚且如此,中文里面有什么理由装外宾(ZWB)呢?
2021-01-14 12:57:23 +08:00
回复了 john990 创建的主题 设计 求设计大佬帮我重新设计个 App
友情提醒一下:AppStore 里面( https://apps.apple.com/cn/app/mockup-app-screenshot-design/id1541634188 ) 效果图内的英文拼写还有问题。而 GooglePlay 里面的没问题。
2021-01-14 12:38:06 +08:00
回复了 sillydaddy 创建的主题 React react 怎样处理父元素的 blur 事件啊??
@hjylxmhzq
@baxtergu
谢谢。感觉 relatedTarget 这个更好用。
2021-01-14 10:55:33 +08:00
回复了 odi 创建的主题 问与答 来点"正"能量,求写一两句祝福公司的话...
“千秋万载,一统江湖。 ... 但愿千秋万载,永如今——”
1 ... 65  66  67  68  69  70  71  72  73  74 ... 83  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3132 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 67ms · UTC 05:00 · PVG 13:00 · LAX 22:00 · JFK 01:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.