php抽獎演算法
① php設置抽獎系統問題
加個欄位,抽完改掉哪個欄位的值。用tinyint就可以了。設0和1就可以。
你說的那同時一張的情況不會出現。mysql執行有先後順序。
② php取隨機數概率演算法
//首先定義概率數組
$Probability["1-10"]=0.6;
$Probability["11-50"]=0.25;
$Probability["51-100"]=0.10;
$Probability["101-200"]=0.05;
//擴大1000倍便於計算
foreach($Probabilityas$k=>$v){
$Probability[$k]=$v*1000;
}
$Num=0;
$Random=rand(1,1000);//生成隨機數
foreach($Probabilityas$k=>$v){
if($Num<$Random&&$Random<=$v+$Num){
//進入這里表示隨機數在哪一個范圍內
$Range=explode("-",$k);
//生成范圍區間的隨機數
$Result=rand($Range[0],$Range[1]);
echo$Result;
break;
}else{
$Num+=$v;
}
}
③ php一個抽獎函數(自定義中獎項數和概率)
解決思路如下:
1)以數字區段來對應中獎情況例如有一、二、三等獎,各自的中獎概率分別為10%、20%、30%那麼有如下劃分:1-10,一等獎;11-30,二等獎;31-60,三等獎,60以上,未中獎
2)產生一個1~100之間的隨機數,看隨機數屬於哪個獎項區域,以確定中獎情況
④ php+MySQL實現抽獎代碼問題
首先關於PHP+MYSQL來實現不可以重復抽獎這個很好實現,因為你抽獎的頁面要麼是動態要麼是AJAX來實現的。首先AJAX的先不說,我先說關於動態頁面實現。
那麼就是載入頁面的時候判斷對方今日有沒有抽過,如果抽過了那麼就用if語句來不執行抽獎代碼。其實裡面還有很多的細節問題,你說讓貼出代碼,我不願意抄別人的東西,同時網上給的代碼好用的很少。
你要是想做一個有個性的功能還是要自己寫的或者修改,不知道你對JS了解多少也沒法說。我說的就是大概的思路。
樣式千萬種,你找到一個你覺得方便而且能達到你目的的同時針對自己的知識的吧。其實不論那種方式都是要用到AJAX的用來確認已經抽過。
⑤ PHP金額越高中獎率越大,如何實現
你可以把輸入的比率都轉換成n/10000
然後按n來抽獎
比如1等獎1/1000 即 10/10000
2等獎 30/10000
3等獎 200/10000
4等獎3000/10000
那麼10+30+200+3000=3240;
取隨機數 r.Next(1,10001)
當0<r<=10 則為1等獎
當 10<r<=10+30 則中2等獎
當 10+30<r<=10+30+200 則中3等獎依次
根據金額判斷他的概率
⑥ php 抽獎活動每天只有三次機會是怎麼實現!求思路,求代碼,
記錄下當前用戶
當天抽獎次數
每次抽獎操作來判斷這個用戶的抽獎次數
,大於大於等於3
就不讓他抽
就行了
⑦ 如何用PHP製作有獎品(數量)的轉盤抽獎
這個不是有key值么,抽到後把這個key值的給unset()
unset() 方法
注意如果你使用 unset() 方法,它是不會改變其他的鍵(key),如果你想對其他的鍵(key)重新整理排序,可以使用 array_values()。
<?php
$array = array(0 => "a", 1 => "b", 2 => "c");unset($array[1]);
//↑ 你要刪除的數組元素值的鍵print_r($array);?>
輸出結果:
Array (
[0] => a [2] => c)
⑧ PHP定義一個數組,保存從1-32的數字,編碼實現隨機排序數組,然後將前8位數字取出,作為抽獎幸運數字
哈哈來遲了,但有更簡單的方法用shuffle將數組打亂了!不用循賦值,並且的確是生成不重復的前8個數字。
$arr=range(1,32);
shuffle($arr);
for($i=0;$i<=7;$i++){
echo $arr[$i]." ";
}
⑨ PHP 數組隨機抽獎,如何實現
使用shuffle ,
把獎項存入數組,對數組shuffle 隨機排序就OK了
例如:
$a=array('A','B','C','D');//抽到C為獎
shuffle ( $a );
如何類推,數組可以是多維數組,關鍵是shuffle 函數的使用。
⑩ php實現可以設置中獎概率的抽獎程序代碼分享
這篇文章主要介紹了一個抽獎程序,要求一等獎的中獎概率是0.12%,二等獎中獎概率是3%,三等獎中獎概率是12%,其他中獎概率是都是謝謝惠顧
代碼如下:
<?php
/**
*
抽獎
*
@param
int
$total
*/
function
getReward($total=1000)
{
$win1
=
floor((0.12*$total)/100);
$win2
=
floor((3*$total)/100);
$win3
=
floor((12*$total)/100);
$other
=
$total-$win1-$win2-$win3;
$return
=
array();
for
($i=0;$i<$win1;$i++)
{
$return[]
=
1;
}
for
($j=0;$j<$win2;$j++)
{
$return[]
=
2;
}
for
($m=0;$m<$win3;$m++)
{
$return[]
=
3;
}
for
($n=0;$n<$other;$n++)
{
$return[]
=
'謝謝惠顧';
}
shuffle($return);
return
$return[array_rand($return)];
}
$data
=
getReward();
echo
$data;
?>