- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在创建一个具有机会系统的服务器端 RPG 游戏。例如,玩家在击中目标时有 30% 的几率使敌人昏迷,并增加 70% 到 35% 的伤害。
所以我提出了这个解决方案。
//'s' as stuns and 'd' as more damage;
array a = ['s', 's', 's', 'd', 'd', 'd', 'd', 'd', 'd', 'd'];
int chance = random(0, 9);
print a[chance];
但是上面的解决方案首先有一个问题,它只适用于整数,另一个问题是它只适用于可以被 10 整除的数字。
例如,上面的函数将不会以 25% 或 0.1% 的几率作为输入工作。
** Warning: The code above is not a language. it just is written algorithm**
最佳答案
生成一个大数,并检查该随机数是否小于表示百分比的数字。
例如,要有 30% 的机会(我将使用 1 的下限来简化代码,并且我假设这两个界限都包含在内):
int chance = random(1, 10) // 1 - 10
if (chance <= 3):
// The 30% chance was met (3 / 10 == 30%)
或
int chance = random(1, 100) // 1 - 100
if (chance <= 37):
// A 37% chance was met (37 / 100 == 37%)
或者,对于 float 机会,从超过 100 的值生成:
int chance = random(1, 1000) // 1 - 1000
if (chance <= 123):
// A 12.3% was met (123 / 1000 == 12.3%)
向随机生成器添加更多 0 以获得更高的精度。小数点后一位为1000,小数点后两位为10000...
条件中的数字是生成器可能产生的最大数字的百分比。
当然,这是假设一个统一的生成器。
关于algorithm - 在角色扮演游戏中创造机会功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821458/
我在创建/理解 promise 方面遇到了困难。我了解它们的优点并了解如何使用它们。创建自己的 promise 功能是困难的部分。简单地说,如何将此函数转换为与 Promise 一起使用: ret.g
这是我以前的question的跟进 假设我想用我的函数创建一个future,但是不想立即启动它(即我不想调用val f = Future { ... // my function}。 现在,我可以看到
使用以下函数表示从本地 html 文件生成 Web 存档 function TLessonConstructor2.CreateMHT( const FileName : string):boolea
我正在研究注册安全。 @RestController public class UserController { @Autowired private BCryptPasswordEncoder bC
在下面的示例代码中,我想创建一个 Item来自 Component 的对象: struct Component { }; struct Item { explicit Item(Compone
我有以下代码。我认为通过发布我可以创建一个热流,但是每个连接上的 uniqueId 都不同。我希望 create 方法执行一次,然后作为任意数量的订阅者的热流运行。 private Date
我有以下型号 type User struct { gorm.Model Languages []Language `gorm:"many2many:user_language
我想做的是用管道创建这种通信: 1 / \ 3 2 \ / 4 所以应该有3个 child 。 parent 给第一个和第二个 child
我正在将一些代码从 Win32 移植到使用锁定文件的 Linux。我用 open 为 Linux 做了一个实现,但我不确定如果文件在 Samba 共享上它是否会工作。我试过了,它似乎可以正常工作,但我
我是一名优秀的程序员,十分优秀!