找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1929|回复: 4

[求助] 有两个新手问题求助T T

[复制链接]
发表于 2021-12-2 11:46:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[RenPy] 纯文本查看 复制代码
$ suiji = renpy.random.randint(0,50)


首先我发现这是个伪随机,每次测试的时候随机数都是以5,33,40,19,2,.....这样出现的。针对这一现象该怎么解决?


然后就是我有一个"盒子",这个盒子里有“香蕉”、“苹果”、“芒果”、“菠萝”....
怎么实现“每次随机吃一样东西,直到把盒子里的东西吃完”。这个效果。

求助各位大佬了。
发表于 2021-12-2 14:25:59 | 显示全部楼层
random.seed(random.randint(0,100))
回复 支持 抱歉

使用道具 举报

发表于 2021-12-3 09:22:54 | 显示全部楼层
做了个简单测试,没有出现楼主说的情况:
[RenPy] 纯文本查看 复制代码
default i = 0

label main_menu:
    return


label start:

    "start..."

    $ i = renpy.random.randint(0, 50)
    
    "The value of i is [i]"


不排除操作系统和Ren'Py版本差异的原因。
也可以通过设置random种子解决,random种子的设置一般使用时间值。

第二个问题,仅在数据层解决的话……
把所有对象放进一个列表 objList 里。
每次需要删除某个对象前,先判断列表长度是否为0;若不为0,生成一个随机数 randIndex ,并根据当前列表长度取模 delIndex = randIndex % (len(objList)) 。
最后直接从列表中删除, del objList[delIndex] 。
至于如何在视图层面表现对象增删,则是另一个复杂的问题了……
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2021-12-8 18:50:29 | 显示全部楼层
被诅咒的章鱼 发表于 2021-12-3 09:22
做了个简单测试,没有出现楼主说的情况:
[RenPy] 纯文本查看 复制代码
default i = 0

[/quote]

[mw_shl_code=renpy,true]$renpy.random.Random(seed=None)

种子该怎么使用啊,为什么我没有效果咧T T
回复 支持 抱歉

使用道具 举报

发表于 2021-12-8 22:23:55 | 显示全部楼层
[RenPy] 纯文本查看 复制代码
default i = 0

init python:
    import time
 
label main_menu:
    return
 
 
label start:
 
    "start..."

    $ timeseed = time.time()
    $ renpy.random.Random(seed=timeseed)
    $ i = renpy.random.randint(0, 50)
     
    "The value of i is [i]"


renpy.random 说明里有一句:与标准的Python随机数生成器不同,这个对象可以与回滚兼容,无论回滚多少次都生成相同的随机数。
生成的随机数会按生成顺序保存,在回滚后保证运行结果的一致性。
楼主说的“每次运行”有没有关闭程序重新运行呢……
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2024-11-22 08:55 , Processed in 0.128105 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表