【抽奖模拟器】C++写了一个抽奖模拟器,可以拿去抽着玩
剑网3指尖江湖吧
全部回复
仅看楼主
level 11
2020年07月14日 07点07分 1
level 11
代码附上:
#include <iostream>
#include <cstdlib>
#include <ctime>
#define random(x) (rand()%(10000))+1
using namespace std;
int main()
{
cout<<"请输入你要抽的次数,1或者5后,按回车,输入0回车后会汇总结果。"<<endl;
int s=0,c=0,d=0,e=0,a;//s计数器
for(int p=1;p<=1000000;p++)
{
cin>>a;
s+=a;
if(a==1||a==5)
{
srand((int)time(0));
for (int i = 0; i < a; i++)
{
int x=random(100);
if(x>=1&&x<=10){cout<<"寒尘照水";c++;}
if(x>=11&&x<=25){cout<<"小戏台";d++;}
if(x>=26&&x<=50){cout<<"白璧自煌";e++;}
if(x>=51&&x<=200)cout<<"化玉玄晶碎片";
if(x>=201&&x<=400)cout<<"叶英突破卡";
if(x>=401&&x<=600)cout<<"沈剑心突破卡";
if(x>=601&&x<=800)cout<<"杨宁突破卡";
if(x>=801&&x<=1000)cout<<"洛风突破卡";
if(x>=1001&&x<=1500)cout<<"绝品玄丸丹";
if(x>=1501&&x<=2100)cout<<"绝品纳元丹";
if(x>=2101&&x<=2500)cout<<"天外陨铁";
if(x>=2501&&x<=3300)cout<<"松梅剑饰";
if(x>=3301&&x<=4200)cout<<"金月糕";
if(x>=4200&&x<=5300)cout<<"赤玉绕梦思";
if(x>=5301&&x<=6500)cout<<"群侠寻访券";
if(x>=6501&&x<=10000)cout<<"心愿币";
cout<<" ";
}
cout<<endl;
}
else if(a==0){cout<<"你一共抽了"<<s<<"次"<<endl;cout<<"抽到了"<<c<<"次超武,"<<d<<"次小戏台,"<<e<<"次皮肤"<<endl;break;}
else {cout<<"不能这么抽"<<endl;continue;}
}
return 0;
}
2020年07月14日 07点07分 2
level 7
大佬闲着都是这么玩的吗[乖]
2020年07月14日 07点07分 3
level 13
谢谢
2020年07月14日 07点07分 4
level 11
这个代码是有缺陷的,可以说是我的算法引起的,我采用随机数来抽奖,在网上找到的C++真随机生成随机数方法只有使用本地时间作为随机因子,所以你抽的特别快的话就会导致几次抽的都是一样的,放在这里主要也是为了抛砖引玉,看看能不能有人改良我的代码或者说用别的语言转换一下我的代码。
2020年07月14日 07点07分 5
level 11
就比如第二张图第一列出现的全部都是群侠寻访券,就是我的代码缺陷
2020年07月14日 07点07分 6
gww:不好,我们抽奖的bug让你给发现了
2020年07月14日 08点07分
level 11
内部价格随机延时,防止手快党。就当是动画。
2020年07月14日 08点07分 7
level 11
大佬闲着都是这么玩的吗[乖]
2020年07月14日 08点07分 8
level 9
也就一个伪随机循环[滑稽]
2020年07月14日 08点07分 9
这个不是C++自带的线性同余法,把时间作为随机因子其实还是挺随机,因为会有变化
2020年07月14日 09点07分
level 9
20年前的网游随机数的确是按本地时间来计算的,所以一直有良辰吉日沐浴更衣来抽奖这个说法。
2020年07月14日 08点07分 10
学到了
2020年07月14日 09点07分
level 10
大佬闲着都是这么玩的吗[乖]
2020年07月14日 09点07分 11
level 11
抽的数目多的话代码本身bug就会弱很多,但是一下一百抽其实没劲
2020年07月14日 09点07分 12
level 9
大佬无聊都是这么玩的吗
2020年07月14日 19点07分 13
level 12
我连怎么玩都不会[喝酒]
2020年07月14日 20点07分 14
1