python C 原神up保底概率计算

背景

原神是由米哈游开发的一款二次元游戏,其中抽卡是其核心玩法之一。关于原神的抽卡概率与保底机制,网上已经有大量的详细解析了。那么到底从长期来看,每次抽到五星角色时,该五星角色恰好为当期UP的概率为多少呢?

大小保底机制详解

原神的大小保底机制如下。若之前从未抽到过五星角色,则抽到的五星角色有50%的概率为当期UP五星角色,50%的概率为非当期UP五星角色。若上次抽到了非当期UP五星角色,则本次抽到五星角色时必为当期UP五星角色,这种情况我们称之为大保底。若上次抽到了当期UP五星角色,则本次抽到五星角色时按之前从未抽到过五星角色对待。

代码及运行结果

C语言代码如下。

#include <stdio.h>
#include <stdlib.h>
#include<time.h>

int main() {
	int i =0,j=0,up=0,down=0;
	int tmp=0;//0表示第一次抽或上次触发了大保底,1表示上次触发了小保底
	srand(time(NULL));
	for(i=0;i<10000;i++){//抽一万次 
		j = rand() % 2;
		if(tmp==0){ 
			if(j==0)up++;//j=0表示抽中了当期UP角色触发了大保底 
			else if(j==1){down++;tmp=1;} //j=1 歪了
			else printf("warning!") ;
		}
		else if (tmp==1) {
			up++;
			tmp=0;
		}
		else printf("warning!") ;
	}
	printf("运行一万次,共抽中当期UP%d次,概率为%.2f,非当期UP%d次,概率为%.2f\n",up,up/10000.0,down,down/10000.0);
	return 0;
}

python代码如下

import random
i,j,up,down=0,0,0,0;
tmp=0;#0表示第一次抽或上次触发了大保底,1表示上次触发了小保底
for i in range(10000): #抽一万次
    j = random.randint(0,1)
    if(tmp==0):
        if(j==0):
            up+=1 #j=0表示抽中了当期UP角色触发了大保底 
        elif(j==1):
            down+=1
            tmp=1; #j=1 歪了
        else:
            printf("warning!") ;
    elif (tmp==1):
        up+=1;
        tmp=0;
    else:
        printf("warning!") ;
print("运行一万次,共抽中当期UP%d次,概率为%.2f,非当期UP%d次,概率为%.2f\n"%(up,up/10000.0,down,down/10000.0));

结果如下:
C:运行一万次,共抽中当期UP6672次,概率为0.67,非当期UP3328次,概率为0.33
python:运行一万次,共抽中当期UP6673次,概率为0.67,非当期UP3327次,概率为0.33

结论

仅从每次来看,歪的概率是0.5,但是有了大小保底机制,歪的概率降低到了0.33,这是在是非常人性化的设计,氪金吧!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值