请教一个随机递减数算法的问题

2016-11-29 21:26:14 +08:00
 soeasy

需求大概是这样:一个砍价的,商品定价为 1000 元。要求 200-250 人砍完,别人帮你砍价的金额是依次递减的,并且是无规律(至少看不出)的随机数,请问怎么实现(本人使用 Java 语言)?

1832 次点击
所在节点    问与答
17 条回复
line
2016-11-29 22:00:38 +08:00
预先减好,不行吗?
woniu127
2016-11-29 22:02:12 +08:00
每次生成一个 4-5 的随机数不就行了
woniu127
2016-11-29 22:09:22 +08:00
给个 python 的,不会 java.
import random
b = 1000
i = 0
while b>0:
a = random.uniform(4, 5)
b = b - a
i = i+1
print(i)
woniu127
2016-11-29 22:11:18 +08:00
好像看错了楼主的意思,我再想想
soeasy
2016-11-29 22:24:25 +08:00
@woniu127 嗯,随机数要递减下去,不能比之前的大
debiann
2016-11-29 22:31:19 +08:00
这随便选个递减函数,取点, smear 一下就行了吧。需要严格递减就每个点都判断下。怎么搞都可以啊
woniu127
2016-11-29 22:31:41 +08:00
这样应该可以了。
```
import random
a = random.uniform(200,250)
b = 1000/a
d = []
for i in range(int(a/2)):
c = random.uniform(0,2*b)
e = 2*b-c
d.append(c)
d.append(e)
d.append(1000-sum(d))
d.sort(reverse=True)
print(d)
print(sum(d))

```
woniu127
2016-11-29 22:32:13 +08:00
回复似乎不支持 markdown
woniu127
2016-11-29 22:34:46 +08:00
我把循环这块空出来

import random
a = random.uniform(200,250)
b = 1000/a
d = []


for i in range(int(a/2)):
c = random.uniform(0,2*b)
e = 2*b-c
d.append(c)
d.append(e)


d.append(1000-sum(d))
d.sort(reverse=True)
print(d)
print(sum(d))
binux
2016-11-29 22:36:55 +08:00
plot (1000 + 100 * sin(x) )(1 - x / 200) from 0 to 250
soeasy
2016-11-29 22:44:23 +08:00
@woniu127 谢谢您的耐心解答,我试下看
soeasy
2016-11-29 22:45:11 +08:00
@binux 谢谢,但是你这个我看的不怎么明白
xxxyyy
2016-11-29 22:57:40 +08:00
@soeasy 把它放到 Google 搜索里就可以看到图像了
soeasy
2016-11-29 23:03:45 +08:00
@xxxyyy 原来还能这样,学习了
binux
2016-11-29 23:19:32 +08:00
@xxxyyy 这个不好理解

用这个 plot (10 + sin(x) )(1 - x / 200) from 0 to 250 , x 为当前砍价人数,公式算出来的就是减多少。
misaka20038numbe
2016-11-30 00:00:44 +08:00
商品 1000 元,每次大概砍 5%左右,200 次之后是 0.03 元,保证每次都比前一次砍的少.
bxb100
2016-11-30 08:14:50 +08:00
缩放的想法很赞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/324200

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX