根据人数随机分配百分比的问题
需求是这样的,根据可变参数 $people 来给每个人随机分配百分比,条件是人数一定会控制在 3
写了个简单的分配,但会出现最后一个人会得到很多的情况,并且由于分配区间实际上是 1 - 平均数 之间的百分比,不是严格意义上的 “随机平均分配”,求各位大大给个思路,抛砖引玉,不甚感谢。
$people = 3; //人数 $percent = 100; //百分比 $average = floor($percent/$people); $rand_array = array(); $count = 0; for ($i=0; $i < $n; $i++) { if($i == ($n - 1)){ $rand_array[$i] = 100 - $count; }else{ $rand_array[$i] = rand(1,$average); $count = $count + $rand_array[$i]; } } return $rand_array;
回复讨论(解决方案)
这样可能好点
$people = 3; //人数$percent = 100; //百分比$res = array_fill(0, 3, floor($percent/$people)); //平均分配$d = 5; //容差foreach($res as &$v) $v += rand(-$d, $d);$res[rand(0, $people-1)] += $percent - array_sum($res); //随机将残差补入print_r($res);
忘记上来结贴了,感谢版主大大的回复,问题已经解决了,贴出来与大家分享:
public static function rand_bouns($person){ //百分比 $percent = 100; $now_person = $person; $bouns = array(); for($i=0;$i<=$person-1;$i++){ $bouns[$i] = self::get_bouns($now_person,$percent); $percent = $percent - $bouns[$i]; $now_person = $now_person - 1; $now_bouns += $bouns[$i]; } return $bouns; }public static function get_bouns($person,$percent){ if($person==1) return $percent; $max = 30; if($percent < $max) $max = $percent; $min = $percent-$max*($person-1) <= 0 ? 1 : $percent-$max*($person-1); $max = $max-($person) <= 0 ? 1 : $max-($person); return rand($min,$max); }

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Keupayaan untuk menjana nombor rawak atau rentetan alfanumerik berguna dalam banyak situasi. Anda boleh menggunakannya untuk melahirkan musuh atau makanan di lokasi yang berbeza dalam permainan. Anda juga boleh menggunakannya untuk mencadangkan kata laluan rawak kepada pengguna atau mencipta nama fail untuk menyimpan fail. Saya menulis tutorial tentang cara menjana rentetan alfanumerik rawak dalam PHP. Saya berkata pada permulaan siaran ini bahawa beberapa peristiwa benar-benar rawak, dan perkara yang sama berlaku untuk nombor rawak atau penjanaan rentetan. Dalam tutorial ini, saya akan menunjukkan kepada anda cara menjana rentetan alfanumerik pseudo-rawak dalam JavaScript. Menjana Nombor Rawak dalam JavaScript Mari mulakan dengan menjana nombor rawak. Kaedah pertama yang terlintas di fikiran ialah Math.random(), yang mengembalikan apungan

Perbezaan antara rawak dan pseudo-rawak ialah kebolehramalan, kebolehulangan, keseragaman dan keselamatan. Pengenalan terperinci: 1. Kebolehramalan nombor rawak tidak dapat diramalkan Walaupun keputusan masa lalu diketahui, keputusan masa hadapan tidak boleh diramalkan dengan tepat kerana ia dijana oleh algoritma benih, anda boleh menjana semula urutan atau jujukan yang sama; 2. Kebolehulangan, nombor rawak tidak boleh dihasilkan semula, dan hasil yang dihasilkan setiap kali adalah bebas, manakala nombor pseudo-rawak boleh dihasilkan semula, hanya menggunakan algoritma dan benih yang sama.

Pecahan dan peratusan ialah dua konsep asas matematik yang digunakan dalam pelbagai bidang seperti kewangan, analisis data dan statistik. Menukar pecahan kepada peratusan ialah operasi yang mudah tetapi perlu yang membolehkan kita mewakili nilai pecahan dengan cara yang lebih mudah difahami. Python, salah satu bahasa pengaturcaraan yang paling popular, menawarkan beberapa kaedah untuk menukar pecahan kepada peratusan, dan memahami kaedah ini adalah penting bagi sesiapa yang bekerja dengan data dalam Python. Artikel ini melihat secara mendalam tentang menukar pecahan kepada peratusan dalam Python. Kami akan meneroka cara yang berbeza untuk melakukan ini dan memberikan contoh untuk membantu anda memahami setiap kaedah. Sama ada anda seorang pemula atau pengaturcara Python yang berpengalaman, artikel ini memberi anda kunci untuk melakukan ini dalam Python

Dalam artikel ini, kita akan belajar cara mendapatkan kekerapan perkataan sebagai peratusan dalam Python. Katakan kita telah memperoleh senarai input rentetan. Sekarang, kita akan mencari peratusan setiap perkataan dalam senarai rentetan input yang diberikan. Kaedah yang digunakan oleh formula (OccurrenceofXword/Totalwords)*100 ialah menggunakan fungsi sum(), Counter(), join() dan split() untuk menggunakan fungsi join(), split() dan count() untuk digunakan fungsi countOf() modul operator. Kaedah 1: Gunakan fungsi sum(), Counter(), join() dan split() join() ialah Py

Python ialah bahasa pengaturcaraan popular yang digunakan secara meluas dalam analisis data, pembelajaran mesin, pembangunan web dan bidang lain. Dalam Python, modul rawak menyediakan fungsi random.randint() untuk menjana integer rawak. Artikel ini menerangkan cara menggunakan fungsi random.randint() untuk menjana integer rawak dan menyediakan beberapa contoh kod. Pertama, kita perlu mengimport modul rawak: importrandom Seterusnya, kita boleh memanggil rando

Dalam mesyuarat Tencent, pengguna boleh menghidupkan kamera mereka sendiri untuk berkongsi, tetapi kamera mempunyai bilangan maksimum orang Jadi apakah had atas bilangan orang pada kamera Di bawah, editor akan memperkenalkan kepada anda had bilangan orang dalam kamera mesyuarat Tencent Mari kita ketahui bersama. Tutorial penggunaan mesyuarat Tencent: Berapakah bilangan maksimum orang untuk kamera mesyuarat Tencent Jawapan: Maksimum ialah 60 orang dan minimum ialah 30 orang? 1. Pengenalan kepada had atas bilangan orang dalam kamera: 1. Komputer boleh memuatkan sehingga 60 orang yang boleh menghidupkan kamera, dan skrin boleh memuatkan sehingga 9 atau 25 orang pada masa yang sama. 2. Telefon bimbit boleh menyokong sehingga 30 orang menghidupkan kamera, dan satu skrin boleh memuatkan sehingga 4 orang pada masa yang sama. 2. Kaedah untuk meningkatkan had atas bilangan video: 1. Jika peserta terlalu ramai, sehingga 30 orang boleh menghidupkan kamera pada masa yang sama. 2. Kita boleh menggunakan antara muka avatar akaun untuk

Windows 11 Microsoft terus berkembang, seperti yang ditunjukkan oleh data Februari 2022 terkini daripada laporan AdDuplex. Sistem pengendalian dengan cepat menghampiri angka 20%, bermakna kira-kira satu daripada lima PC kini menjalankan Windows 11. Versi awam Windows 11, Windows 1121H2, kini berada pada tahap 19.3%. Sementara itu, kadar orang dalam menjalankan pelbagai binaan pratonton kini ialah 0.3%. Ini menjadikan jumlah bahagian Windows 11 kepada 19.6%, dan menjelang Mac, bahagian peratusan ini mungkin melebihi 20%. Windows 11 dan banyak Wind

Menyelesaikan ralat PHP: Cuba tetapkan hasil bukan pembolehubah kepada titik sambungan Dalam pembangunan PHP, kami sering menghadapi pelbagai mesej ralat. Salah satu daripadanya ialah "TryingtoAssignNon-VariabletoConcatenate" (TryingtoAssignNon-VariabletoConcatenate). Mesej ralat ini menunjukkan bahawa dalam operator titik gabung (.), kami cuba untuk menyertai keputusan bukan pembolehubah. Untuk menyelesaikan masalah ini, kita perlu terlebih dahulu memahami peranan dan penggunaan pengendali titik gabungan.
