/** * 测试BIN分布 */ import pkg from './src/tools/card/CardGeneratorTool.js'; const { CardGeneratorTool } = pkg; async function test() { console.log('生成1000张卡,分析BIN分布...\n'); const cardGen = new CardGeneratorTool(); await cardGen.initialize({}); const cards = await cardGen.generateBatch(1000, 'unionpay'); // 统计BIN分布 const binCounts = {}; cards.forEach(card => { const bin = card.number.slice(0, 13); binCounts[bin] = (binCounts[bin] || 0) + 1; }); // 排序 const sorted = Object.entries(binCounts) .sort((a, b) => b[1] - a[1]); console.log('=== BIN分布(前10个) ===\n'); sorted.slice(0, 10).forEach(([bin, count], i) => { const percent = (count / 1000 * 100).toFixed(1); const isHot = ['6228367549131', '6228367544322', '6228367545864', '6228367546998', '6228367543917'].includes(bin); const mark = isHot ? '🔥' : ' '; console.log(`${i + 1}. ${mark} ${bin}: ${count}次 (${percent}%)`); }); // 统计热门BIN的总占比 const hotBins = ['6228367549131', '6228367544322', '6228367545864', '6228367546998', '6228367543917']; const hotCount = hotBins.reduce((sum, bin) => sum + (binCounts[bin] || 0), 0); const hotPercent = (hotCount / 1000 * 100).toFixed(1); console.log(`\n=== 热门BIN统计 ===`); console.log(`热门BIN总占比: ${hotCount}/1000 (${hotPercent}%)`); console.log(`期望占比: ~${(5 * 5 / (5 * 5 + 60 * 1) * 100).toFixed(1)}% (权重5 vs 权重1)`); } test().catch(err => { console.error('错误:', err.message); console.error(err.stack); });