砍价函数

客户需求:指定一个目标金额,每次砍价减少在指定金额范围内的随机金额,判断砍价是否成功,如果成功为剩余金额为0,失败剩余金额为负数。

根据此需求整理了一个函数,提供给大家参考下。

/**
	 * 根据剩余金额,再倒数第三次抽奖后控制获取下一次砍价的随机值
	 * $this->min_money 砍价范围金额最小值
	 * $this->max_money 砍价范围金额最大值
	 * $money 需要砍价的金额
	 */
	function getRand($money, $is_prize = 0) {
		if ($money <= 0) {
			return 0;
		}
		//最后2次抽奖为最小值的和
		$min = $this->min_money * 2;
		//最后2次抽奖为最大值的和
		$max = $this->max_money * 2;
		//中间值
		//$mid = $this->max_money - $this->min_money;
		//和值
		$sum = $this->max_money + $this->min_money;
		//警戒值,进入此值范围后人工控制随机金额范围,根据是否中奖判断值是否超标
		//最后3次抽奖人工控制随机数范围
		$m = ($min + $this->max_money) - 1;
		//警戒值范围外取随机数
		if ($money > $m) {
			$r = rand($this->min_money, $this->max_money);
		} else if ($money >= $min && $money <= $m) {
			//倒数第三次
			//剩余金额处于警戒值和2次最小值之间
			if ($money >= $max) {
				//位于警戒值和上限之间
				$r = rand($this->min_money, $this->min_money + ($money - $max));
			} else {
				//第二次抽奖控制范围
				if ($money >= $sum) {
					$r = rand(round(($money / 2), 0), $this->max_money);
				} else {
					$r = rand($this->min_money, round(($money / 2), 0));
				}
			}
		} else {
			//第三次
			if ($is_prize) {
				$r = $money;
			} else {
				$r = rand($money + 1, $this->max_money);
			}
		}
		return $r;
	}

 

在Python中模拟砍价游戏通常会涉及到一些基本的游戏规则和随机元素。你可以设计一个简单的交互式程序,让用户扮演买家和卖家的角色,通过输入价格和砍价策略来进行互动。以下是一个简化的步骤: 1. **创建角色**:定义两个类,如Buyer和Seller,每个类包含初始价格、折扣策略等属性。 ```python class Buyer: def __init__(self, initial_price): self.price = initial_price # 设定砍价次数或折扣范围 class Seller: def __init__(self, initial_price): self.price = initial_price # 设定最低接受价格或折扣范围 ``` 2. **用户输入**:设置循环让玩家轮流砍价。买家猜测价格,卖家给出回应。 ```python def simulate_bargaining(): buyer = Buyer(random.randint(50, 100)) # 示例:随机价格在50到100之间 seller = Seller(buyer.price) while True: print(f"买家认为价格应该是{buyer.price}") new_price = input("请输入您的出价(输入'quit'退出):") if new_price.lower() == "quit": break if not new_price.isdigit(): print("无效输入,请输入数字") continue new_price = int(new_price) buyer.price = max(new_price, seller.accepted_min_price) # 确保买家不会低于卖家底线 seller.price -= random.randint(1, max(seller.discount_range, buyer.price - seller.price)) # 卖家降价 ``` 3. **结束条件**:当买家不再砍价或者达到某个预设条件(比如达到协议价格),游戏结束。 4. **结果展示**:显示最终交易价格,并询问玩家是否满意。 这只是一个基础版本,实际模拟可以更复杂,比如添加更多谈判策略、历史记录跟踪等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值