|
本帖最后由 GMagels 于 2024-4-18 16:59 编辑
本帖为整活内容,仅供娱乐,不构成任何活动建议!
下午看了新活动的二阶段规则,肥肠烧脑,非常有意思!活动传送门:[全局活动] 【万物货郎】二阶段拍卖活动
说实话该怎么分配声望,在这个时间点是真的没什么头绪,直到在活动帖子里看到这样一句话:
虽然可能没有人真的会用随机策略,但是随机在拿不定主意的时候,确实能提供一种思路一种选择,
那为什么不整一个程序来生成随机策略呢,于是就有了这一篇整活帖:
根据规则,每个人手上有(一阶段追随小于5)
2,4,6,8,12,18,24,32,40 共计9个声望
或者(一阶段追随大于等于5)
1,2,4,6,8,12,18,24,32,40 共计10个声望
拍品有11个,整体持续7天,每天随机1-2件拍品,且并非所有拍品都会参与拍卖。
由于并不清楚拍品是否出场以及其出场的具体的顺序,并不好对每个拍品进行具体的随机出价。
但是7天这个天数是确定的,因此问题就可以转化为这七天里每天怎么花费声望(如果一天有2个就请自行分配)。
只需要通过随机数确定每个声望在第几天花掉就行(或者不花),于是就有了下面这段代码。
无需代码基础点击运行即可,代码运行在本地浏览器,不会上传任何数据(如果有请指出),无需担心隐私问题或是土豆压力问题。
文本框内的代码是可修改的,直接改内容然后点击运行就行,可修改内容为:
剩余天数
这里填写活动剩余的天数,
例如活动的第二天结束,应该填入的天数为5,代码应为:var leftDays = 5;
声望组成
填写你的声望组成,如果没有1声望则删除掉1即可,其余同理,例如
手上没有1声望应为:var shengWang = [2,4,6,8,12,18,24,32,40];
手上只剩1声望应为:var shengWang = [1];
手上有1和2声望为:var shengWang = [1,2];
注意逗号需要在英文输入法状态下输入!或者干脆直接按照手上声望的情况删除没有的声望即可。
每个声望不被使用的概率(0到1):
这个代表每个声望有多大概率最后会被剩下来,取值为0-1的小数或整数,
0为全部使用,即花费所有声望,7天之后剩余声望0,
这个值越大,生成的结果中剩下来的声望数就更有可能大,
例如值为0.2,应为:var leftRate = 0.2;
这代表生成的结果中,每个声望有20%的概率不会被用到,剩下来的声望值大概率不多。
由于竞拍失败会返还声望,该值建议设置的比预期剩余值小一点。
(在文本框内点击就可以修改变量的值!)
<div id="randomResult"></div><script type="text/javascript">
//可修改内容:
var leftDays = 7;
var shengWang = [1,2,4,6,8,12,18,24,32,40];
var leftRate = 0.3;
//可修改部分结束!
var huaFeiTianShu = new Array();
document.getElementById("randomResult").innerText += "当前声望为 【"+shengWang+"】 \n";
document.getElementById("randomResult").innerText += "不使用概率: "+leftRate*100+"% \n\n";
//生成由0-7组成的随机数组
for(var index = 0; index < shengWang.length; index++){
if(Math.random() < leftRate){
huaFeiTianShu.push(0);
}else{
huaFeiTianShu.push(parseInt(Math.random()*(leftDays - 1 + 1) + 1,10));
}
}
document.getElementById("randomResult").innerText += "随机结果为 【"+huaFeiTianShu+"】 \n\n";
document.getElementById("randomResult").innerText += "详细结果如下 \n\n";
var leftSum = 0;
for( var dayValue = 0; dayValue <= leftDays; dayValue++){
var infoString;
if(dayValue == 0){
infoString="X不使用的声望是: ";
}else{
infoString ="第"+dayValue+"天使用的声望为 ";
}
for( index = 0; index < huaFeiTianShu.length; index++){
if(huaFeiTianShu[index] == dayValue){
infoString += '[' + shengWang[index] + '] ';
if(dayValue == 0){
leftSum += shengWang[index];
}
}
}
document.getElementById("randomResult").innerText += infoString + " \n";
}
document.getElementById("randomResult").innerText += leftDays + "天之后剩余声望为 " + leftSum + " \n\n";
document.getElementById("randomResult").innerText += "随机结果生成完毕!仅供娱乐,不构成活动建议!";
</script>
↑点击这个按钮运行即可,注意点击运行按钮之后会弹出新标签页
不会真的有人按照这个随机的结果来分配声望吧.....
19:22更新:代码已修复,出错的原因是使用了变量i作为循环变量,但是帖子会把这个i识别为斜体标记.....所以,这件事情告诉我们:养成好习惯,不要用i做循环变量,用index。
00:32更新:由于活动每天结算之后,竞拍失败之后会返还失败的声望部分,因此可能需要重新计算新的规划。本次更新提供了新的剩余天数变量,方便各位在活动中任意时间节点重新计算。
01:33更新:根据39楼反馈,改进了排版
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
查看全部评分
|