Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk melaksanakan fungsi sampul merah dalam kod php

Bagaimana untuk melaksanakan fungsi sampul merah dalam kod php

藏色散人
藏色散人asal
2021-11-02 09:39:072655semak imbas

Cara melaksanakan fungsi sampul merah dalam kod PHP: 1. Gunakan kaedah distribute_red_bages untuk mencapai sampul merah bertuah; mencapai bilangan sampul merah yang ditetapkan.

Bagaimana untuk melaksanakan fungsi sampul merah dalam kod php

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

Bagaimanakah kod php laksanakan fungsi sampul merah?

Kod fungsi sampul merah PHP

Saya ditanya soalan ini suatu ketika dahulu, jadi saya menulisnya apabila saya sempat Baru-baru ini agak menarik

Pertama sekali Mari kita klasifikasikan kaedah merebut sampul merah:

Bagi orang yang menghantar sampul merah, terdapat kira-kira 3 kategori (saya tidak fikir yang lain. namun, sila hubungi saya jika anda memikirkannya~)

1. Bilangan sampul merah bertuah adalah berubah-ubah (semuanya bergantung pada nasib)

2. Bilangan sampul merah bertuah yang dinyatakan (nombor tertentu, sekurang-kurangnya satu mata)

3. Sampul merah dibahagi sama rata (nombor satu) Set, semua kongsi sama rata) Ini lebih mudah untuk menulis, bukan? Hehe

Kod:

<?php
var_dump(rob_red_bages(5 , 10));
var_dump(distribute_red_bages(5));
/*
方法主要功能:拼手气红包(个数不定)
一个参数
    参数一: 红包总金额(按分计算)
*/
function distribute_red_bages($sum){
    $sum = $sum*100;
    $i=0;
    while($sum>0){
        $temp = rand(1 , $sum);//红包值
        $sum -= $temp;
        $arr[$i++] = $temp/100;
    }
    //check($arr);
    return $arr;
}
/*
方法主要功能:均分红包
两个参数:
    参数一: 红包总金额
    参数二: 均分个数
*/
function average_red_bages($sum , $num){
    $res = $sum/$num;
    for($i=0 ; $i<$num ; $i++){
        $arr[$i] = $res;
    }
    //check($arr);
    return $arr;
}
/*
方法主要功能:规定个数的手气红包
两个参数: 
    参数一:红包总金额
    参数二:红包个数
    
    计算流程,随机生成num个数
    求和得到m
    用sum/m 得到每个数需要k
    用随机数*k
*/
function rob_red_bages($sum , $num){
    $sum = $sum*100;
    for($i=0 ; $i<$num ; $i++){
        $temp = rand(1 , $sum);
        $arr[$i] = $temp;
        $sumall += $temp;
    }
    $k = $sum/$sumall;
    for($i=0 ; $i<sizeof($arr); $i++){
        $arr2[$i] = $arr[$i]*$k/100;        
    }
    return $arr2;
}
/*红包总额检测*/
function check($arr){
    foreach($arr as $a){
        $sum += $a;
        echo $a."+";
    }
    
    echo " 0 =".$sum."\n";
}
?>

Jom analisa sampul merah bertuah (saya tidak akan bercakap tentang bahagian yang sama, semua orang tahu):

Nombor bertuah sampul merah tidak pasti Idea: (jumlah keseluruhan: jumlah)

---->Secara rawak nombor pertama kurang daripada jumlah: n

---->Tolak nombor ini daripada jumlah jumlah: temp = sum-n

----> Secara rawak nombor yang kurang daripada temp

----> Ulang kaedah di atas sehingga jumlah keseluruhan ialah 0

-- -->Kembalikan tatasusunan yang menyimpan hasil rawak

Kaedah ini lebih konvensional, dan ia juga boleh digunakan untuk mencapai bilangan sampul merah yang ditentukan! Walau bagaimanapun~

Idea untuk menetapkan bilangan sampul merah bertuah (jumlah jumlah, nombor sampul merah)

----> Nombor secara rawak kurang daripada jumlah , jana tatasusunan

---->Jumlah nombor ini untuk mendapatkan kesemuanya

----> Bahagikan hasil tambah dengan semua untuk mendapatkan gandaan sepunya semua nombor yang dijana

----> ;Darab setiap elemen tatasusunan dengan gandaan sepunya untuk mendapatkan nilai setiap sampul merah

Kaedah ini mempunyai kekurangan (hasil akhir mungkin lebih besar sedikit daripada jumlah, atau sedikit lebih kecil daripada jumlah kerana pembahagian boleh menghasilkan nombor tidak rasional)

Itu mungkin sahaja! Selamat datang untuk berkomunikasi dan membuat pembetulan! ~~~

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi sampul merah dalam kod php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn