Project1

标题: 求教数值题,答对有糖! [打印本页]

作者: meigo    时间: 2012-8-29 22:27
标题: 求教数值题,答对有糖!
本帖最后由 meigo 于 2012-8-29 23:07 编辑

红宝石可以用来给武器升级,升级一次消耗一个宝石,失败等级减一,成功等级加一。

1级,成功率为80%。
2级,成功率为70%。
3级,成功率为60%。
4级,成功率为50%。
5级,成功率为40%。
6级,成功率为30%。


问:大概多少个红宝石可以把武器升级到6?

@疯狂异形


作者: fxwd    时间: 2012-8-29 22:42
你没说清楚,如果运气好就是6个,不好的话1万个也升不到
作者: 疯狂异形    时间: 2012-8-29 22:48
求红宝石消耗数
作者: fxwd    时间: 2012-8-29 22:49
最少就是6个啊
作者: 小镜子    时间: 2012-8-29 22:50
RP差你就别想升级了
作者: Luciffer    时间: 2012-8-29 22:51
提示:请考虑RM默认不产生浮点数。
作者: 怪蜀黍    时间: 2012-8-29 22:55
我解释一下,他是说升到6级的数学期望
作者: 天使喝可乐    时间: 2012-8-29 22:56
最少6个 最多无限个 有疑问吗?
只要存在几率就没有上限……


作者: harinlen    时间: 2012-8-29 22:58
Luciffer 发表于 2012-8-29 22:51
提示:请考虑RM默认不产生浮点数。

。。升级的必要条件是使用一个宝石啊?那么最少的话就应当把这个条件判定为充要条件啊?那么不就是6级6个宝石么?

和是否成功的算法貌似。。没有联系吧?(还是我没明白题么?)
作者: 迷糊的安安    时间: 2012-8-29 22:58
天使喝可乐 发表于 2012-8-29 22:56
最少6个 最多无限个 有疑问吗?
只要存在几率就没有上限……

计算机产生不了真正的随机数。这就和RO砸装备一样。
作者: harinlen    时间: 2012-8-29 23:33
Luciffer 发表于 2012-8-29 22:51
提示:请考虑RM默认不产生浮点数。

于是很纠结啊……这个用算法表示的话肯定挂掉T T……
深度优先的话光是第一次是否成功的枚举就直接让CPU挂掉了。
广度优先的话因为求的就是最大次数因此无法使用……
结论:搜索算法否定。

那么,接下来考虑动态规划。
此题明显不属于线性范畴,线性动态规划否决。
01背包:每一个宝石的使用不是单纯的用或者不用,否决。
能与此题有关系的应该就是二分查找树了,但是数的深度可以是无穷大,得不出结论,否决。
那么,动态规划基本上否决掉了- -(鄙人动规学得很差- -)

于是想不出别的算法了啊- -
作者: 疯狂异形    时间: 2012-8-29 23:36
用ζ随机变量来计算啊混蛋
你不是会编程嘛
作者: harinlen    时间: 2012-8-29 23:38
疯狂异形 发表于 2012-8-29 23:36
用ζ随机变量来计算啊混蛋
你不是会编程嘛

求数学期望为什么要用随机变量啊?求最值为什么还要置随机啊?
作者: meigo    时间: 2012-8-29 23:39
harinlen 发表于 2012-8-29 23:33
于是很纠结啊……这个用算法表示的话肯定挂掉T T……
深度优先的话光是第一次是否成功的枚举就直接让CPU ...

居然显示不全。。

听起来好像应该是求不出解,不过网游里面这些概率到底根据什么来的呢?不是会拍脑袋吧。
作者: harinlen    时间: 2012-8-29 23:40
LZ说了要是网游的话,我大概知道是怎么实现的了……那个的话基本上就没想让用户能够升到满级- -
作者: 疯狂异形    时间: 2012-8-29 23:41
meigo 发表于 2012-8-29 15:39
居然显示不全。。

听起来好像应该是求不出解,不过网游里面这些概率到底根据什么来的呢?不是会拍脑袋吧 ...

= = 我正在算
别急嘛去睡个觉就什么都有了
作者: harinlen    时间: 2012-8-29 23:49
meigo 发表于 2012-8-29 23:39
居然显示不全。。

听起来好像应该是求不出解,不过网游里面这些概率到底根据什么来的呢?不是会拍脑袋吧 ...

如果宝石的总量是一定的,或者说在某种情况下宝石的使用是有限制的,那么就可以获得期望了。
下面使用GNU C++对这个过程的一个模拟性描述:
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <ctime>

  4. using namespace std;
  5. srand(unsigned(time(0)));
  6. double UpgradeJudge[]={0.8,0.7,0.6,0.5,0.4,0.3};

  7. double Random_Possible(double start, double end)
  8. {
  9.     return start+(end-start)*rand()/(RAND_MAX + 1.0);
  10. }

  11. double UpgradePossible()
  12. {
  13.     return Random_Possible(0.0,1.0);
  14. }

  15. int main(int argc,char *argv[])
  16. {
  17.     int WeaponLv=0,ProcessTimes=0;
  18.     while(Weapon<7){
  19.       if(UpgragePossible()<=UpgradeJudge[Weapon]){
  20.         WeaponLv++;
  21.       }
  22.       else{
  23.         if(WeaponLv>0) WeaponLv--;
  24.       }
  25.       ProcessTimes++;
  26.     };
  27.     cout<<ProcessTimes<<endl;
  28.     system("PAUSE");
  29.     return EXIT_SUCCESS;
  30. }
复制代码

作者: meigo    时间: 2012-8-29 23:50
harinlen 发表于 2012-8-29 23:40
LZ说了要是网游的话,我大概知道是怎么实现的了……那个的话基本上就没想让用户能够升到满级- - ...


我们这边的程序写了个模拟器,一般模拟出来100以内就能到6,不过里面的东西我都不懂所以问问。
作者: 疯狂异形    时间: 2012-8-29 23:51
1级期望值是1.4848个红宝石。

   失败率无望
作者: 疯狂异形    时间: 2012-8-29 23:53
harinlen 发表于 2012-8-29 15:40
LZ说了要是网游的话,我大概知道是怎么实现的了……那个的话基本上就没想让用户能够升到满级- - ...

能算

1.目标为求宝石数;2.设随机变量,按照分布列计算平均宝石数,错位相消然后两式相减;最后得结果


‘‘──疯狂异形于2012-8-29 15:54补充以下内容:

宝石数不一样也可以算,失败率和宝石数差异会加大难度而已。
’’
作者: harinlen    时间: 2012-8-29 23:56
疯狂异形 发表于 2012-8-29 23:53
能算

1.目标为求宝石数;2.设随机变量,按照分布列计算平均宝石数,错位相消然后两式相减;最后得结果

置完随机种子后怎么算的分布列……而且分布列不需要随机种子。
作者: 疯狂异形    时间: 2012-8-30 00:00
harinlen 发表于 2012-8-29 15:56
置完随机种子后怎么算的分布列……而且分布列不需要随机种子。

模糊算法。
不用一阶一阶的去计算,奇数分布列就行了。
三阶足矣。

1S'(y)=1+x+x^2+x^3+∞
这样的分布列就可以了。
作者: harinlen    时间: 2012-8-30 00:10
疯狂异形 发表于 2012-8-30 00:00
模糊算法。
不用一阶一阶的去计算,奇数分布列就行了。
三阶足矣。

我对这个模糊算法持质疑态度……交流下:
1、奇数分布列?不一定,考虑如下情况:
第一次失败,然后连续六次成功。合计七次。
第一次成功,第二次失败,然后连续六次成功,合计八次。
这样的话,从6开始连续的自然数均有取值可能性,奇数分布列不成立。
2、强调下这个是分布,不是分布列,这是两个概念。
3、此分布公式应该隶属于二项分布,二项分布的定义是:二项分布即重复n次的伯努利试验。在每次试验中只有两种可能的结果,而且是互相对立的,是独立的,与其它各次试验结果无关。而现在升级的结果明显与之前的结果有关系,所以对公式的使用提出疑问。

以上~
作者: 疯狂异形    时间: 2012-8-30 00:14
harinlen 发表于 2012-8-29 16:10
我对这个模糊算法持质疑态度……交流下:
1、奇数分布列?不一定,考虑如下情况:
第一次失败,然后连续 ...


这么说吧,各阶段升级的需求不同
LV1模糊算法1357∞
LV2无模糊算法146789

要画TF表的。
作者: harinlen    时间: 2012-8-30 00:17
疯狂异形 发表于 2012-8-30 00:14
这么说吧,各阶段升级的需求不同
LV1模糊算法1357∞
LV2无模糊算法146789

我现在对这个所谓的模糊算法还是不清楚,能否用伪代码描述下?C/C++最好~
然后,所谓的一阶是怎么定义的?映射哪个概念???- -
作者: 疯狂异形    时间: 2012-8-30 00:26
harinlen 发表于 2012-8-29 16:17
我现在对这个所谓的模糊算法还是不清楚,能否用伪代码描述下?C/C++最好~
然后,所谓的一阶是怎么定义的 ...

不会编程怎么破……
作者: harinlen    时间: 2012-8-30 00:31
疯狂异形 发表于 2012-8-30 00:26
不会编程怎么破……

不会编程怎么用的二分查找树算的啊?那玩意儿手算三层就乱了。而且这肯定不是二分。
作者: harinlen    时间: 2012-8-30 00:33
疯狂异形 发表于 2012-8-30 00:26
不会编程怎么破……

话说,伪代码应该不算编程范畴,算数学里一种表示算法的方式。不用学编程DAzE~
作者: meigo    时间: 2012-8-30 00:36
感觉像在听天书 果然做游戏不容易啊- -!
作者: harinlen    时间: 2012-8-30 00:41
meigo 发表于 2012-8-30 00:36
感觉像在听天书 果然做游戏不容易啊- -!

额。。现在讨论的问题早已超过游戏的范畴了。。游戏的话我已经给出了C++的描述代码了,翻译成JS还是很容易的。
作者: 疯狂异形    时间: 2012-8-30 01:07
harinlen 发表于 2012-8-29 16:33
话说,伪代码应该不算编程范畴,算数学里一种表示算法的方式。不用学编程DAzE~ ...


当然是脑算的啊,不会编程的人只能用爱来拟补。
作者: 疯狂异形    时间: 2012-8-30 01:09
harinlen 发表于 2012-8-29 16:41
额。。现在讨论的问题早已超过游戏的范畴了。。游戏的话我已经给出了C++的描述代码了,翻译成JS还是很容 ...

对了,我记得一年前有一个同行教我用切普曼科尔莫格洛夫方程来算装备升级
……好像很方便的样子。

  求会的教一下怎么用

作者: y610407721    时间: 2012-8-30 01:12
在腾讯的游戏里面,最算你RP再好,也休想升级= =,何况像我这样RP差的人...
作者: harinlen    时间: 2012-8-30 01:15
疯狂异形 发表于 2012-8-30 01:07
当然是脑算的啊,不会编程的人只能用爱来拟补。

那么,求平衡条件和方程。。
作者: harinlen    时间: 2012-8-30 01:24
疯狂异形 发表于 2012-8-30 01:09
对了,我记得一年前有一个同行教我用切普曼科尔莫格洛夫方程来算装备升级
……好像很方便的样子。

CK方程的状态转移方程写成矩阵形式:
p(n+m)=p(n)p(m )       n, m≧0
然后执行有限维度的动态规划就可以了。
作者: 疯狂异形    时间: 2012-8-30 01:30
harinlen 发表于 2012-8-29 17:24
CK方程的状态转移方程写成矩阵形式:
p(n+m)=p(n)p(m )       n, m≧0
然后执行有限维度的动态规划 ...

我试试看,
学习了。
作者: harinlen    时间: 2012-8-30 01:37
疯狂异形 发表于 2012-8-30 01:30
我试试看,
学习了。

不能用这个,动归最后的结果是内存溢出。而且这个必须有限维度,所以不能使用。
作者: 疯狂异形    时间: 2012-8-30 01:47
harinlen 发表于 2012-8-29 17:37
不能用这个,动归最后的结果是内存溢出。而且这个必须有限维度,所以不能使用。 ...

现在有一个想法:

LV2出矩阵,然后程序算10086次总结概率
P=[0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.7 0.0 0.3 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.7 0.0 0.3 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.7 0.0 0.3 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.7 0.0 0.3 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.7 0.0 0.3 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.7 0.0 0.3 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.7 0.0 0.3
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0];

OMG,最终我还是偷懒了……
如果用我的老方法,那就是画树表,求结果为LV3的升级可能性。
然后按照这些可能性出分布列求随机变量

下面就是得平均红宝石数的过程了。
土办法勿喷
作者: harinlen    时间: 2012-8-30 01:53
疯狂异形 发表于 2012-8-30 01:47
现在有一个想法:

LV2出矩阵,然后程序算10086次总结概率

额。。首先,感觉矩阵错了。
因为没有说一共10次。
然后硬要用CK的话需要确定的数量范围,此题没有明确给出。现有条件下是算不出来的。需要其它条件。
作者: 疯狂异形    时间: 2012-8-30 02:13
harinlen 发表于 2012-8-29 17:53
额。。首先,感觉矩阵错了。
因为没有说一共10次。
然后硬要用CK的话需要确定的数量范围,此题没有明确给 ...

是这样的。
1.求一次随机的升级概率(LV2默认为0.7)
2.求二次随机的升级概率(先决条件为第一次是失败的)
3.求第三次
4.第四次
5.∞

四次算下来就行了。
作者: 疯狂异形    时间: 2012-8-30 03:37
harinlen 发表于 2012-8-29 17:53
额。。首先,感觉矩阵错了。
因为没有说一共10次。
然后硬要用CK的话需要确定的数量范围,此题没有明确给 ...

呐,这就是个构思而已。

  我的编程知识也就到此为止了。
作者: 灵朔-冷智    时间: 2012-8-30 07:32
第一级失败不能降级怎么办
作者: IamI    时间: 2012-8-30 08:10
{:2_270:}数学题为什么都在编程……
@DeathKing<- 打个枪
作者: 闻人翎    时间: 2012-8-30 08:13
好苛刻的问题。。

表示随机率神马的很讨厌……
作者: 疯狂异形    时间: 2012-8-30 08:17
IamI 发表于 2012-8-30 00:10
数学题为什么都在编程……
@DeathKing

编程可以自动执行测试求出均值
这种东西手算会很疼。
(其实是因为我学艺不精

ummmmm……
  DK会算?
作者: 527391078    时间: 2012-8-30 08:18
我只会说,打死我也不升级武器
把矿石拿去换圣灵药才是王道
作者: lianran123456    时间: 2012-8-30 08:59
迷糊的安安 发表于 2012-8-29 22:58
计算机产生不了真正的随机数。这就和RO砸装备一样。

这也和DNF强化装备一样
作者: 咕噜    时间: 2012-8-30 09:36
100个也未必 ……
作者: meigo    时间: 2012-8-30 09:55
本帖最后由 meigo 于 2012-8-30 09:59 编辑

用程式模拟的话应该是6步条件分歧吧?

第1步80%成功20%失败,加起来100%。成功的场合进入第2部,失败的场合不变。

第2步70%成功30%失败,成功的场合进入第3部,失败的场合返回第1步。

第3步60%成功40%失败,成功的场合进入第4部,失败的场合返回第2步。

第4步50%成功50%失败,成功的场合进入第5部,失败的场合返回第3步。

第5步40%成功60%失败,成功的场合进入第6部,失败的场合返回第4步。

第6步30%成功70%失败,成功的场合完成任务,失败的场合返回第6步。


因为不知道宝石的数学期望值没有办法定价,所以想知道模拟出来的结果对不对?

@harinlen@疯狂异形
作者: 天使喝可乐    时间: 2012-8-30 10:19
你干脆做个工程模拟一下不就完了…… 求100次结果取平均数……
作者: 杜塞尔    时间: 2012-8-30 10:24
本帖最后由 杜塞尔 于 2012-8-30 10:28 编辑

运气是一种很难琢磨的属性。
————————————————————
99.9%的成功率也有可能失败……此乃成熟男人砸装备的亲生体验,为了节约一块宝石而忽略的0.01%的失败率(放越多的宝石成功率越高的这种系统)
结果宝石全部浪费了……好在那个游戏升级失败不会让装备破碎。
————————————————————
但只要有成功率在,坚持不懈的砸一定可以成功的,100下总有一次会成功不是么。

最大——最小的区间范围是
6-600次
既然是百分比的成功率(只要这个不是虚假的),就算你运气再糟糕100次成功1次是必然的。

像是50%的成功率,第一次是50%,第二次也是50%,第100次也是50%,但一个人100次不会命中另外一个区间的几率约等于0,这就好像1%的成功率每次都成功一样。
作者: yangff    时间: 2012-8-30 10:29
= =数学期望……
作者: 疯狂异形    时间: 2012-8-30 10:42
harinlen 发表于 2012-8-29 17:24
CK方程的状态转移方程写成矩阵形式:
p(n+m)=p(n)p(m )       n, m≧0
然后执行有限维度的动态规划 ...

嗯呐……这样吧,改天我专门写一篇东西,讲我的计算方法。
XD,到时候咱俩再来交锋一下~~~
作者: harinlen    时间: 2012-8-30 10:43
疯狂异形 发表于 2012-8-30 10:42
嗯呐……这样吧,改天我专门写一篇东西,讲我的计算方法。
XD,到时候咱俩再来交锋一下~~~ ...

新人废柴一根请大触饶命0 0{:2_270:}
作者: 疯狂异形    时间: 2012-8-31 14:44
本帖最后由 疯狂异形 于 2012-8-31 07:01 编辑


啊啊啊啊啊啊啊!!!!!!!!
我这个数值渣用了N天终于算出来了!!!!!!!

……开门见山吧。

1(0-1一定会成功的升级次数)+47.71

之前没有演算


作者: kfflX    时间: 2012-8-31 15:04
永远要记住一件事……
成功几率为80%不代表10次里一定会有8次成功。
因此次题答案为6-无限大。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1