首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

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

  •  
  •   soeasy · 2016-11-29 21:26:14 +08:00 · 1236 次点击
    这是一个创建于 1101 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    17 回复  |  直到 2016-11-30 08:14:50 +08:00
        1
    line   2016-11-29 22:00:38 +08:00
    预先减好,不行吗?
        2
    woniu127   2016-11-29 22:02:12 +08:00
    每次生成一个 4-5 的随机数不就行了
        3
    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)
        4
    woniu127   2016-11-29 22:11:18 +08:00
    好像看错了楼主的意思,我再想想
        5
    soeasy   2016-11-29 22:24:25 +08:00
    @woniu127 嗯,随机数要递减下去,不能比之前的大
        6
    debiann   2016-11-29 22:31:19 +08:00 via iPhone
    这随便选个递减函数,取点, smear 一下就行了吧。需要严格递减就每个点都判断下。怎么搞都可以啊
        7
    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))

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

    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))
        10
    binux   2016-11-29 22:36:55 +08:00   ♥ 4
    plot (1000 + 100 * sin(x) )(1 - x / 200) from 0 to 250
        11
    soeasy   2016-11-29 22:44:23 +08:00
    @woniu127 谢谢您的耐心解答,我试下看
        12
    soeasy   2016-11-29 22:45:11 +08:00
    @binux 谢谢,但是你这个我看的不怎么明白
        13
    xxxyyy   2016-11-29 22:57:40 +08:00 via Android   ♥ 1
    @soeasy 把它放到 Google 搜索里就可以看到图像了
        14
    soeasy   2016-11-29 23:03:45 +08:00
    @xxxyyy 原来还能这样,学习了
        15
    binux   2016-11-29 23:19:32 +08:00
    @xxxyyy 这个不好理解

    用这个 plot (10 + sin(x) )(1 - x / 200) from 0 to 250 , x 为当前砍价人数,公式算出来的就是减多少。
        16
    misaka20038numbe   2016-11-30 00:00:44 +08:00   ♥ 3
    商品 1000 元,每次大概砍 5%左右,200 次之后是 0.03 元,保证每次都比前一次砍的少.
        17
    bxb100   2016-11-30 08:14:50 +08:00 via Android
    缩放的想法很赞
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1270 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 33ms · UTC 17:51 · PVG 01:51 · LAX 09:51 · JFK 12:51
    ♥ Do have faith in what you're doing.