1、抢红包算法
二倍均值法实现的抢红包算法的代码(以下代码由chatGPT生成)
// 抢红包方法
function grabRedPacket(totalAmount, totalPeople) {
// 用于存储红包金额
let redPackets = [];
// 剩余金额
let remainAmount = totalAmount * 100;
// 剩余人数
let remainPeople = totalPeople;
// 生成随机数,模拟每个红包的金额
for (let i = 0; i < totalPeople; i++) {
let randomAmount;
if (i < totalPeople - 1) {
// 生成随机数,保证最小金额为0.01元
randomAmount = Math.floor(Math.random() * (remainAmount / remainPeople * 2 - 1) + 1);
randomAmount = Math.min(randomAmount, remainAmount - (totalPeople - i - 1));
remainAmount -= randomAmount;
remainPeople--;
} else {
// 最后一次生成的随机数直接设置为剩下的金额
randomAmount = remainAmount;
}
redPackets.push(randomAmount / 100);
}
return redPackets;
}
// 抢红包示例
let totalAmount = 1;
let totalPeople = 100;
console.log(grabRedPacket(totalAmount, totalPeople));
2、二分查找算法
以下代码由chatGPT生成
class Node {
constructor(value, left = null, right = null) {
this.value = value;
this.left = left;
this.right = right;
}
}
class BinaryTree {
constructor(root = null) {
this.root = root;
}
lookup(value) {
return this.lookupNode(this.root, value);
}
lookupNode(node, value) {
if (!node) return false;
if (node.value === value) return true;
if (value < node.value) {
return this.lookupNode(node.left, value);
} else {
return this.lookupNode(node.right, value);
}
}
}
const tree = new BinaryTree(new Node(10, new Node(5), new Node(15)));
console.log(tree.lookup(10)); // outputs: true
console.log(tree.lookup(5)); // outputs: true
console.log(tree.lookup(15)); // outputs: true
console.log(tree.lookup(20)); // outputs: false