public function setRound($pid, $round, $uid = 0)
 {
     S('luckydray_round', $round, 60 * 5);
     //五分钟
     if ($round == 3) {
         $sc = M('Socialcircle')->where('pid = %d', $pid)->find();
         //判断在本社交圈中是否已经有人中大奖
         //TODO 这里暂时写死大奖ID 5
         $cnt = M('Drawrecord')->where('scid = %d and pid = 5', $sc['id'])->count();
         if (!$cnt) {
             $userList = M('SocialcircleUser')->field('uid,cnt')->where('scid = %d and cnt > 9', $sc['id'])->select();
             $arr = array();
             foreach ($userList as $key => $val) {
                 $arr[$val['uid']] = (int) $val['cnt'];
             }
             $userID = get_rand($arr);
             //根据概率获取奖项id
             if ($uid) {
                 $userID = $uid;
             }
             S('luckydray_jackpot', $userID, 60 * 5);
             //中大奖用户ID
         }
     }
     $this->success('设置成功', U('luckyDraw', array('pid' => $pid, 'uid' => $uid)));
 }
function upload_file($file)
{
    $target_dir = '../files/';
    $file_name = get_rand(30) . ".xls";
    $target_file = $target_dir . $file_name;
    $response = "";
    $size = $file['size'];
    if ($size !== false) {
        if (move_uploaded_file($file['tmp_name'], $target_file)) {
            $response = $file_name;
        }
    }
    return $response;
}
function upload_file($file)
{
    $target_dir = '../private/videos/';
    $path_parts = pathinfo($file["name"]);
    $extension = $path_parts['extension'];
    $file_name = get_rand() . '.' . $extension;
    $target_file = $target_dir . $file_name;
    $response = "";
    $size = $file['size'];
    if ($size !== false) {
        if (move_uploaded_file($file['tmp_name'], $target_file)) {
            $response = $file_name;
        }
    }
    return $response;
}
Esempio n. 4
0
 public function getReadRedis()
 {
     if (self::$_multi == 1) {
         return $this->getWriteRedis();
     }
     if (self::$_master == 1) {
         return $this->getWriteRedis();
     }
     if (!is_object(self::$_redis_r)) {
         if (array_key_exists('cacheSlave', $this->_options)) {
             $options = $this->_options['cacheSlave'];
         }
         $options[] = $this->_options['cache'];
         $arr = array();
         foreach ($options as $i => $option) {
             $arr[] = isset($option['weight']) ? intval($option['weight']) : 1;
         }
         self::$_redis_r = $this->_getRedis($options[get_rand($arr)]);
     }
     return self::$_redis_r;
 }
			change_elem.style.color = "green";
		}
	}
}

window.addEventListener ?
  window.addEventListener('load', start, false) :
  window.attachEvent('onload', start);

--></script>
<h2>Nytt köp</h2>
<form autocomplete="off" id="retail_form" action="scripts/finish_transaction.php" method="post">

	<div id="this_purchase">
		<input type="hidden" name="random" value="<?php 
echo get_rand();
?>
" />
		<h2>Detta köp</h2>
		<table>
			<tr>
				<td>Att betala</td>
				<td><strong id="sum">0 kr</strong></td>
			</tr>
			<tr>
				<td>Öresavrundning</td>
				<td><strong id="diff">0.00 kr</strong></td>
			</tr>
			<tr>
				<td>Mottaget</td>
				<td><input style="font-weight: bold; width: 6em;" maxlength="6" tabindex="2" type="text" name="recieved" id="recieved" onkeypress="return keyHook(event);" /> kr</td>
Esempio n. 6
0
?>
" class="prov_tiki" lang="kota_tiki"><option value=""> - </option></select><span id="load_prov_tiki"></span></li><br>
		<li><label style="width:150px;"><?php 
echo lang('kota');
?>
 :</label><select name="kota_tiki" class="kota_tiki"><option value=""> - </option></select><span id="load_kota_tiki"></span></li>
	</ul>
</div>
<br>
<div class="wrap-ct">
	<div class="head-title-member">
		<h3>Detail Pembelian</h3>
	</div>
	<ul class="form" style="padding:15px;">
	<? 
		$kode_unik=get_rand(2,0);
		$cv3=convert_unit($tot_berat); // convert unit berat ke gr-->kg
		$total_berat_real = $cv3['hasil']; // dlm satuan kg, dlm satuan gr nya adl ($total_berat)
		$satuan_total_berat = $cv3['satuan'];
		$total_berat_perkalian = ceil(($tot_berat/1000)); // dlm satuan kg yg sdh di bulatkan ke atas
		$total_biaya_kirim = $total_berat_perkalian*$cust->regular; // total keseluruhan
		$tot=$tot_biaya+$kode_unik+$total_biaya_kirim;
	?>
	<?php 
echo lang('tot_order');
?>
 : Rp <?php 
echo currency($tot_biaya);
?>
<br />
	<?php 
Esempio n. 7
0
File: 1.php Progetto: xibaachao/1bz
 * 其中id表示中奖等级,prize表示奖品,v表示中奖概率。
 * 注意其中的v必须为整数,你可以将对应的 奖项的v设置成0,即意味着该奖项抽中的几率是0,
 * 数组中v的总和(基数),基数越大越能体现概率的准确性。
 * 本例中v的总和为100,那么平板电脑对应的 中奖概率就是1%,
 * 如果v的总和是10000,那中奖概率就是万分之一了。
 * 
 */
$prize_arr = array('0' => array('id' => 1, 'prize' => '平板电脑', 'v' => 1), '1' => array('id' => 2, 'prize' => '数码相机', 'v' => 5));
/*
 * 每次前端页面的请求,PHP循环奖项设置数组,
 * 通过概率计算函数get_rand获取抽中的奖项id。
 * 将中奖奖品保存在数组$res['yes']中,
 * 而剩下的未中奖的信息保存在$res['no']中,
 * 最后输出json个数数据给前端页面。
 */
foreach ($prize_arr as $key => $val) {
    $arr[$val['id']] = $val['v'];
}
$rid = get_rand($arr);
//根据概率获取奖项id
echo $rid;
$res['yes'] = $prize_arr[$rid - 1]['prize'];
//中奖项
unset($prize_arr[$rid - 1]);
//将中奖项从数组中剔除,剩下未中奖项
shuffle($prize_arr);
//打乱数组顺序
for ($i = 0; $i < count($prize_arr); $i++) {
    $pr[] = $prize_arr[$i]['prize'];
}
$res['no'] = $pr;
Esempio n. 8
0
<?php

include "waltzFiles/includes/config.php";
include "waltzFiles/includes/functions.php";
date_default_timezone_set("Asia/Singapore");
$fromPageErr = $_GET['e'];
if ($fromPageErr == "1") {
    $errMsg = "Please enter Mobile Number and School Name.";
}
if ($_POST['SIGNUP']) {
    $Phone = str_replace("'", "`", $_POST['txtPhone']);
    $School = str_replace("'", "`", $_POST['txtSchool']);
    if (!$Phone == "" and !$School == "") {
        $savePassword = get_rand(8);
        $saveDate = date('Y-m-d H:i:s');
        $saveTime = date('H:i:s');
        $query = 'SELECT max(id) as maxID FROM prereg_db';
        $result = mysql_query($query, $link) or die('Query failed: ' . mysql_error());
        $PID = 0;
        while ($rowsRet = mysql_fetch_array($result)) {
            $PID = $rowsRet['maxID'];
        }
        $PID = $PID + 1;
        /*Romove temporary // confirmation email too slow
        		//SEND EMAIL
        		$sendgrid = new SendGrid($sendgrid_username, $sendgrid_password, array("turn_off_ssl_verification" => true));
        		$email    = new SendGrid\Email();
        		$emailContent = "<strong>Thank you for registering. \r\n  Your confirmation code is $savePassword</strong> </br></br> \r\n";
        		$email->addTo($Email)->
        			   setFrom($fromEmail)->
        			   setSubject('ORANGEAPPS.PH Confirmation Email')->
Esempio n. 9
0
 public function detail()
 {
     //echo generateExchangeCode();exit();
     $user_id = intval($this->user['user_id']);
     //$user_id = 496;
     if (!$user_id) {
         $this->errorOutput('登录才能参加抽奖哦!');
     }
     $id = intval($this->input['id']);
     $sort_id = intval($this->input['sort_id']);
     if ($this->input['shenwen']) {
         if (!$this->curl) {
             return array();
         }
         if ($_FILES) {
             $file = $_FILES;
         }
         $this->curl->setSubmitType('post');
         $this->curl->setReturnFormat('json');
         $this->curl->initPostData();
         $this->curl->addFile($file);
         $this->curl->addRequestData('shenwen', $this->input['shenwen']);
         $this->curl->addRequestData('a', 'show');
         $ret = $this->curl->request('shenwen.php');
         if ($ret['channel_name']) {
             $sql = "SELECT id FROM " . DB_PREFIX . "sort WHERE name LIME '" . $ret['channel_name'] . "%'";
             $res = $this->db->query_first($sql);
             if ($res['id']) {
                 $sort_id = $res['id'];
             }
         }
     }
     $data = array();
     if ($this->settings['lottery_filter']) {
         $sql = "SELECT * FROM " . DB_PREFIX . "lottery_filter WHERE 1 ";
         if ($sort_id) {
             $sql .= "AND sort_id = " . $sort_id . " ORDER BY order_id DESC LIMIT 0,1";
         } else {
             if ($id) {
                 $sql .= "AND id = " . $id;
             } else {
                 $sql .= "ORDER BY order_id DESC LIMIT 0,1";
             }
         }
         $res = $this->db->query_first($sql);
         if ($res['content']) {
             $data = unserialize($res['content']);
             $data['end_hours'] = $data['end_hour'];
             $data['start_hours'] = $data['start_hour'];
             $id = $data['id'];
             if ($res['win_info']) {
                 $data['win_info'] = unserialize($res['win_info']);
             }
         }
     }
     //hg_pre($data,0);
     if (empty($data)) {
         if ($sort_id) {
             $sql = "SELECT id FROM " . DB_PREFIX . "lottery WHERE status = 1 AND sort_id = " . $sort_id . " \n\t\t\t\t\t\tORDER BY order_id DESC LIMIT 0,1";
             $res = $this->db->query_first($sql);
             $id = $res['id'] ? $res['id'] : 0;
         }
     }
     $id = $id ? $id : intval($this->input['id']);
     if (!$id) {
         $this->errorOutput('不存在此活动');
     }
     if (empty($data)) {
         include_once CUR_CONF_PATH . 'lib/lottery_mode.php';
         $obj = new lottery_mode();
         $data = $obj->detail($id);
     }
     if (!$data['id'] || $data['status'] != 1) {
         $this->errorOutput('不存在此活动');
     }
     //hg_pre($data,0);
     //时间和周期判断
     if ($data['time_limit']) {
         $week_now = date('w', TIMENOW);
         $hour_now = date('His', TIMENOW);
         $day_now = date('d', TIMENOW);
         $notstartdesc = $data['notstartdesc'];
         if (!$notstartdesc) {
             $notstartdesc = $this->settings['notstartdesc'] ? $this->settings['notstartdesc'] : '活动尚未开始, 敬请期待';
         }
         if ($data['start_times'] > TIMENOW || $data['start_hours'] > $hour_now) {
             $this->errorOutput($notstartdesc);
         }
         if ($data['end_times'] < TIMENOW || $hour_now > $data['end_hours']) {
             $message = $data['finish_desc'];
             if (!$message) {
                 $message = $this->settings['finish_desc'] ? $this->settings['finish_desc'] : '活动已结束, 敬请期待下次活动1.';
             }
             $this->errorOutput($message);
         }
         if ($data['cycle_type'] && $data['cycle_value']) {
             $data['cycle_value'] = explode(',', $data['cycle_value']);
             if ($week_now == 0) {
                 $week_now = 1;
             }
             if ($data['cycle_type'] == 1 && !in_array($week_now, $data['cycle_value'])) {
                 $this->errorOutput($notstartdesc);
             } else {
                 if ($data['cycle_type'] == 2 && !in_array($day_now, $data['cycle_value'])) {
                     $this->errorOutput($notstartdesc);
                 }
             }
         }
     }
     //中奖限制
     if ($data['lottery_limit']) {
         $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE prize_id != 0 AND confirm = 1 AND member_id = " . $user_id . " AND lottery_id = " . $data['id'];
         $res = $this->db->query_first($sql);
         if ($res['total']) {
             $message = $this->settings['lottery_limit_tip'] ? $this->settings['lottery_limit_tip'] : '您已中奖,谢谢参与!';
             $this->errorOutput($message);
         }
     }
     //积分限制
     if ($data['score_limit'] && $data['need_score'] > 0) {
         include_once ROOT_PATH . 'lib/class/members.class.php';
         $mem_obj = new members();
         $credit = $mem_obj->get_member_credits($user_id);
         if ($credit[$user_id]['credits'] < $data['need_score']) {
             $this->errorOutput('对不起,您的积分不够了!');
         }
     }
     //限制ip
     if ($data['ip_limit']) {
         $ip_limit_hour = $data['ip_limit_time'] ? $data['ip_limit_time'] : 1;
         $ip_limit_num = $data['ip_limit_num'] ? $data['ip_limit_num'] : 1;
         $ip_limit_time = TIMENOW - $ip_limit_hour * 3600;
         $ip = hg_getip();
         //查询用户参加此活动次数
         $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE confirm = 1 AND ip = '" . $ip . "' AND lottery_id = " . $data['id'] . " AND create_time > " . $ip_limit_time;
         $res = $this->db->query_first($sql);
         //达到ip限制次数
         if ($res['total'] >= $data['ip_limit_num']) {
             $this->errorOutput('您已参加活动,下一时段活动再来吧!');
         }
     }
     //限制设备标识
     $device_token = $this->input['device_token'];
     if ($data['device_limit'] && $device_token) {
         $device_limit_hour = $data['device_limit_time'] ? $data['device_limit_time'] : 1;
         $device_num_limit = $data['device_num_limit'] ? $data['device_num_limit'] : 1;
         $device_limit_time = TIMENOW - $device_limit_hour * 3600;
         //查询用户参加此活动次数
         $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE confirm = 1 AND device_token = '" . $device_token . "' AND lottery_id = " . $data['id'] . " AND create_time > " . $device_limit_time;
         $res = $this->db->query_first($sql);
         //达到ip限制次数
         if ($res['total'] >= $data['device_num_limit']) {
             $this->errorOutput('您已参加活动,下一时段活动再来吧!');
         }
     }
     //限制用户参加活动次数
     if ($data['num_limit'] && $data['account_limit']) {
         //查询用户参加此活动次数
         $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE confirm = 1 AND member_id = " . $user_id . " AND lottery_id = " . $data['id'];
         $res = $this->db->query_first($sql);
         //查询额外奖励抽奖次数
         $sql = "SELECT reward_num FROM " . DB_PREFIX . "reward WHERE member_id = {$user_id} AND lottery_id = {$id}";
         $reward = $this->db->query_first($sql);
         $reward_num = $reward['reward_num'];
         if ($reward_num) {
             $data['account_limit'] += $reward_num;
         }
         //达到活动限制次数
         if ($res['total'] >= $data['account_limit']) {
             $this->errorOutput('您已参加活动,下一时段活动再来吧!');
         }
     }
     //区域限制
     if ($data['area_limit']) {
         $distance = '';
         if ($this->input['GPS_longitude'] || $this->input['GPS_latitude']) {
             //计算距离
             if ($data['GPS_latitude'] && $data['GPS_longitude']) {
                 $distance = GetDistance($data['GPS_latitude'], $data['GPS_longitude'], $this->input['GPS_latitude'], $this->input['GPS_longitude']);
             }
         } elseif ($this->input['baidu_longitude'] || $this->input['baidu_latitude']) {
             if ($data['baidu_latitude'] && $data['baidu_longitude']) {
                 $distance = GetDistance($data['baidu_latitude'], $data['baidu_longitude'], $this->input['baidu_latitude'], $this->input['baidu_longitude']);
             }
         }
         if ($distance > $data['distance']) {
             $this->errorOutput('您不在抽奖范围内,请到' . $data['address'] . '附近。');
         }
     }
     //版本限制
     if ($data['version_limit'] && $data['version_limit'] > $this->input['version']) {
         $this->errorOutput('您的应用版本过低,升级后再来吧!');
     }
     //未中奖反馈
     $feedback = $data['feedback'];
     $arr = $prize = $award = array();
     //查询活动奖品
     $prize_arr = array();
     $prize_arr = $data['prize'];
     //中奖次数限制
     $win_limit_flag = false;
     if ($data['win_limit']) {
         if (!$data['win_num_limit']) {
             $win_limit_flag = true;
         } else {
             $today_start = strtotime(date('Y-m-d', TIMENOW));
             $today_end = $today_start + 86400;
             $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE confirm = 1 AND prize_id != '' AND create_time >= '" . $today_start . "' AND create_time < '" . $today_end . "' AND lottery_id = " . $data['id'];
             $res = $this->db->query_first($sql);
             if ($res['total'] >= $data['win_num_limit']) {
                 $win_limit_flag = true;
             }
         }
     }
     if (empty($prize_arr) && !$win_limit_flag) {
         //查询奖项
         $sql = 'SELECT p.*,m.host,m.dir,m.filepath,m.filename FROM ' . DB_PREFIX . "prize p  \n\t\t\t\t\tLEFT JOIN " . DB_PREFIX . "materials m \n\t\t\t\t\t\tON p.indexpic_id = m.id \n\t\t\t\t\tWHERE p.lottery_id = {$data['id']} ORDER BY id ASC";
         $q = $this->db->query($sql);
         while ($row = $this->db->fetch_array($q)) {
             $prize_arr[$row['id']] = $row;
         }
     }
     $sum = array();
     $arr = array();
     if (is_array($prize_arr) && count($prize_arr) && !$win_limit_flag) {
         foreach ($prize_arr as $key => $val) {
             if ($val['prize_win'] >= $val['prize_num']) {
                 continue;
             }
             $chance = array();
             $chance = explode('/', $val['chance']);
             if (!$chance[1]) {
                 continue;
             }
             $arr[$val['id']] = $chance[0];
             $sum[$val['id']] = $chance[1];
         }
     }
     $prize_id = '';
     if ($sum && $arr) {
         $prize_id = get_rand($arr, $sum);
         //根据概率获取奖项id
     }
     $prize_id = $prize_id ? $prize_id : 0;
     $award['lottery_id'] = $data['id'];
     //抽奖活动id
     $award['score_limit'] = $data['score_limit'];
     //积分限制
     $award['need_score'] = $data['need_score'];
     //需要积分
     $award['id'] = $prize_id;
     //奖品id
     $award['win_info'] = $data['win_info'] ? $data['win_info'] : array();
     $award['indexpic'] = $data['indexpic'] ? $data['indexpic'] : array();
     if ($prize_id) {
         $prize = $prize_arr[$prize_id];
         $prize_indexpic = array('host' => $prize['host'], 'dir' => $prize['dir'], 'filepath' => $prize['filepath'], 'filename' => $prize['filename']);
         $award['prize'] = $prize['prize'];
         //奖品名称
         $award['name'] = $prize['name'];
         //奖项名称
         $award['tip'] = $prize['tip'];
         //奖品名称
         $award['prize_indexpic'] = $prize_indexpic;
         //奖品索引图
     } else {
         $feedback_count = count($feedback);
         $rand_num = mt_rand(0, $feedback_count - 1);
         $award['tip'] = $feedback[$rand_num];
         //奖品名称
         $award['name'] = '谢谢参与';
         //奖项名称
     }
     //记录获奖记录
     $lottery_data = array('lottery_id' => $data['id'], 'prize_id' => $prize_id, 'create_time' => TIMENOW);
     $send_no = md5(uniqid(rand(), true));
     $lottery_data['sendno'] = $award['sendno'] = $send_no;
     //中奖随机串
     if ($data['score_limit'] && $data['need_score'] != 0) {
         $award['scores'] = $data['need_score'] < 0 ? abs($data['need_score']) : '-' . $data['need_score'];
     }
     $sql = " INSERT INTO " . DB_PREFIX . "win_info SET ";
     foreach ($lottery_data as $k => $v) {
         $sql .= " {$k} = '{$v}',";
     }
     $sql = trim($sql, ',');
     $this->db->query($sql);
     $wininfo_id = $this->db->insert_id();
     //中奖信息记录成功
     if ($wininfo_id && $this->settings['lock_stock']) {
         //更新库存
         $sql = "UPDATE " . DB_PREFIX . "prize SET prize_win = prize_win + 1 WHERE id = " . $prize_id;
         $this->db->query($sql);
         //记录锁止库存表
         $lock_data = array('send_no' => $send_no, 'prize_id' => $prize_id, 'member_id' => $user_id, 'lottery_id' => $data['id'], 'create_time' => TIMENOW);
         $sql = " INSERT INTO " . DB_PREFIX . "stock_lock SET ";
         foreach ($lock_data as $k => $v) {
             $sql .= " {$k} = '{$v}',";
         }
         $sql = trim($sql, ',');
         $this->db->query($sql);
     }
     if ($this->input['tv_interact']) {
         $this->input['sendno'] = $lottery_data['sendno'];
         $this->update_win_info();
     }
     $this->addItem($award);
     $this->output();
 }
Esempio n. 10
0
 $lotteryId = get_rand($LOTTERY_HIGH_PROB);
 $r = getReleaseRst($lotteryId, $currentTime);
 if (!empty($r) && $r->num_rows > 0) {
     $row = $r->fetch_object();
 }
 //命中释放时间取高概率
 if (!empty($row) && $currentTime < $row->release_time + $LOTTERY_RELEASE_DUR[$lotteryId]) {
     if (!getrandByFactor(LOTTERY_HIGH_SND_PROB)) {
         $lotteryId = 0;
         $result['msg'] = '差点就中了';
     }
     //print_r($row);
     // echo "命中大概率".$currentTime.'--'.$row->release_time.'---'.$LOTTERY_RELEASE_DUR[$lotteryId];
 } else {
     //不在释放时间内取低概率
     $lotteryId = get_rand($LOTTERY_LOW_PROB);
     if ($lotteryId == 0) {
         $result['msg'] = '手气不太好';
     }
 }
 // $lotteryId=5测试抽奖;
 if (defined('ENV') && ENV != 'production') {
     // $lotteryId=rand(0,5);
 }
 //$lotteryId=5;
 if ($lotteryId != 0) {
     $prizeRst = getPrizeResult();
     while ($row = $prizeRst->fetch_object()) {
         //print_r($row);
         if ($row->id == $lotteryId) {
             break;
Esempio n. 11
0
 echo "<table style='width:600px;margin:auto;'>\n<tr><td align='center'>\n<div id='login' width='100%' align='center'>Login to {$domain}</div>\n";
 if (!empty($_REQUEST['T8']['up_login']) && !empty($_REQUEST['T8']['up_pass'])) {
     SavedLogin($_REQUEST['T8']['up_login'], $_REQUEST['T8']['up_pass']);
 } else {
     html_error('Login Error: Email or Password empty.');
 }
 // Retrive upload ID
 echo "<script type='text/javascript'>document.getElementById('login').style.display='none';</script>\n<div id='info' width='100%' align='center'>Retrive upload url</div>\n";
 $ul_url = apiReq(array('a' => 'u', 's' => $fsize));
 if (is_numeric($ul_url[0])) {
     check_errors($ul_url[0], 'Error getting upload url');
 }
 $up_url = $ul_url[0]['p'];
 $ul_key = array();
 for ($i = 0; $i < 6; $i++) {
     $ul_key[] = get_rand(3);
 }
 // Uploading
 echo "<script type='text/javascript'>document.getElementById('info').style.display='none';</script>\n";
 $mac_str = '';
 $upfiles = T8_mega_upload($up_url, $ul_key, $lfile, $lname, $mac_str);
 // Upload Finished
 //echo "<script type='text/javascript'>document.getElementById('progressblock').style.display='none';</script>\n";
 echo "<script type='text/javascript'>document.getElementById('upload_div').style.display='none';</script>\n";
 is_page($upfiles);
 if ($calcMacEachChunk) {
     $file_mac = str_to_a32($mac_str);
     mcrypt_generic_deinit($m_td1);
     mcrypt_module_close($m_td1);
     mcrypt_generic_deinit($m_td2);
     mcrypt_module_close($m_td2);
Esempio n. 12
0
 public function getLottery()
 {
     /*
      * 经典的概率算法, 
      * $proArr是一个预先设置的数组, 
      * 假设数组为:array(100,200,300,400), 
      * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内,  
      * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, 
      * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。 
      * 这样 筛选到最终,总会有一个数满足要求。 
      * 就相当于去一个箱子里摸东西, 
      * 第一个不是,第二个不是,第三个还不是,那最后一个一定是。 
      * 这个算法简单,而且效率非常 高, 
      * 关键是这个算法已在我们以前的项目中有应用,尤其是大数据量的项目中效率非常棒。 
      */
     function get_rand($proArr)
     {
         $result = '';
         //概率数组的总概率精度
         $proSum = array_sum($proArr);
         //概率数组循环
         foreach ($proArr as $key => $proCur) {
             $randNum = mt_rand(1, $proSum);
             if ($randNum <= $proCur) {
                 $result = $key;
                 break;
             } else {
                 $proSum -= $proCur;
             }
         }
         unset($proArr);
         return $result;
     }
     /*
      * 奖项数组 
      * 是一个二维数组,记录了所有本次抽奖的奖项信息, 
      * 其中id表示中奖等级,prize表示奖品,v表示中奖概率。 
      * 注意其中的v必须为整数,你可以将对应的 奖项的v设置成0,即意味着该奖项抽中的几率是0, 
      * 数组中v的总和(基数),基数越大越能体现概率的准确性。 
      * 本例中v的总和为100,那么平板电脑对应的 中奖概率就是1%, 
      * 如果v的总和是10000,那中奖概率就是万分之一了。 
      *  
      */
     /**
      * [0,337,"未中奖"],[1,26,"免单4999元"],[2,88,"免单50元"],[3,137,"免单10元"],[4,185,"免单5元"],[5,235,"免分期服务费"]
      */
     $prize_arr = array('0' => array('id' => 1, "angles" => 337, 'prize' => '80元代金券', 'v' => 5), '1' => array('id' => 2, "angles" => 26, 'prize' => '50元代金券', 'v' => 40), '2' => array('id' => 3, "angles" => 88, 'prize' => '10元代金券', 'v' => 0), '3' => array('id' => 4, "angles" => 137, 'prize' => '60元代金券', 'v' => 25), '4' => array('id' => 5, "angles" => 185, 'prize' => '70元代金券', 'v' => 25), '5' => array('id' => 6, "angles" => 235, 'prize' => '100元代金券', 'v' => 5));
     /*
      * 每次前端页面的请求,PHP循环奖项设置数组, 
      * 通过概率计算函数get_rand获取抽中的奖项id。 
      * 将中奖奖品保存在数组$res['yes']中, 
      * 而剩下的未中奖的信息保存在$res['no']中, 
      * 最后输出json个数数据给前端页面。 
      */
     foreach ($prize_arr as $key => $val) {
         $arr[$val['id']] = $val['v'];
     }
     $rid = get_rand($arr);
     //根据概率获取奖项id
     $res['yes'] = $prize_arr[$rid - 1];
     //中奖项
     unset($prize_arr[$rid - 1]);
     //将中奖项从数组中剔除,剩下未中奖项
     shuffle($prize_arr);
     //打乱数组顺序
     for ($i = 0; $i < count($prize_arr); $i++) {
         $pr[] = $prize_arr[$i]['prize'];
     }
     $res['no'] = $pr;
     echo json_encode($res["yes"]);
 }
Esempio n. 13
0
$zzzadata = DB::fetch_first("SELECT * FROM " . DB::table('yinxingfei_zzza_rank') . " WHERE uid = '" . $_G['uid'] . "'");
$zzza_lasttime_dateline = empty($zzzadata['dateline']) ? 0 : $zzzadata['dateline'];
//判断用户今天是否参与过摇奖
if (dgmdate($_G['timestamp'], 'Ymd', $_G['setting']['timeoffset']) <= dgmdate($zzza_lasttime_dateline, 'Ymd', $_G['setting']['timeoffset'])) {
    exit('Access Denied');
}
//是否初始化获得积分
$initialization_mark = DB::result_first("SELECT value FROM " . DB::table('yinxingfei_zzza_mark') . " WHERE uid = '" . $_G['uid'] . "'");
$initialization_mark = empty($initialization_mark) ? 0 : $initialization_mark;
//0:未初始化
//1:已经初始化
if ($initialization_mark == 0) {
    $range1percentage = DB::result_first("SELECT percentage FROM " . DB::table('yinxingfei_zzza_range') . " WHERE id = '1'");
    $range2percentage = DB::result_first("SELECT percentage FROM " . DB::table('yinxingfei_zzza_range') . " WHERE id = '2'");
    $range3percentage = DB::result_first("SELECT percentage FROM " . DB::table('yinxingfei_zzza_range') . " WHERE id = '3'");
    $rangeid = get_rand(array($range1percentage, $range2percentage, $range3percentage));
    $rangeid = $rangeid + 1;
    $rangeab = DB::fetch_first("SELECT min,max FROM " . DB::table('yinxingfei_zzza_range') . " WHERE id = '" . $rangeid . "'");
    $initialization_extcredit = mt_rand($rangeab['min'], $rangeab['max']);
    $today_extcredit = $initialization_extcredit;
    $zzzadata['uid'] = $_G['uid'];
    $zzzadata['username'] = getusername($_G['uid']);
    $zzzadata['today_extcredit'] = $initialization_extcredit;
    DB::insert('yinxingfei_zzza_rank', $zzzadata, false, true);
    //更新插入数据
    //防止用户通过多浏览器不断刷新刷积分代码,我们就通过初始化记录为准,不管刷新多少次都是调用初始化
    $newmark = array('uid' => $_G['uid'], 'value' => 1);
    DB::insert('yinxingfei_zzza_mark', $newmark, false, true);
} else {
    $today_extcredit = $zzzadata['today_extcredit'];
}
 private function draw($round, $index = -1)
 {
     $prize = D('Prize')->field('id,pname,icon,level,odds,sort')->where('scid = %d and cntremain > 0', $this->scid)->select();
     $arr = array();
     foreach ($prize as $key => $val) {
         $arr[] = (int) $val['odds'];
     }
     if ($index === -1) {
         $index = get_rand($arr);
         //根据概率获取奖项id
     }
     //设置获奖物品角度
     $prize[$index]['angle'] = ((int) $prize[$index]['sort'] * 2 - 1) * 22.5;
     $pid = $prize[$index]['id'];
     $this->setPrize($round, $pid);
     $this->retSuccess($prize[$index]);
 }
Esempio n. 15
0
 /**
  * @再一次签到。随机
  */
 private function dosignAgain($rand, $data)
 {
     if ($data['round'] >= $data['roundMx']) {
         $this->content = '您已经签到过了,明天再来吧!';
     } else {
         $data['round']++;
         $data = array('uid' => $data['uid'], 'tob' => 'check_in', 'scores' => $data['scores'], 'mobile' => $data['mobile'], 'title' => '微信签到', 'round' => $data['round']);
         $return = $this->points->addPointsLog($data);
         if ($return) {
             $this->creatContent();
             $evnt = get_rand($rand);
             if ($evnt == 'stop') {
                 $scores = $data['scores'] * $data['round'];
                 $this->content .= "您今日共获得{$scores}个图腾币!";
                 $this->content .= "\n/:handclap 国庆快乐";
             } elseif ($evnt == 'again') {
                 $this->doLottery($data);
                 //抽奖
             }
         } else {
             $this->content = '签到失败,请稍后再试!';
         }
     }
 }
Esempio n. 16
0
 public function lottery()
 {
     $id = intval($this->input['id']);
     if (!$id) {
         return false;
     }
     $data = $this->mode->detail($id);
     //查询活动中奖记录
     $sql = "SELECT w.*,p.name,p.type,p.prize FROM " . DB_PREFIX . "win_info w\n\t\t\t\tLEFT JOIN " . DB_PREFIX . "prize p \n\t\t\t\t\tON w.prize_id = p.id \n\t\t\t\tWHERE w.lottery_id = " . $data['id'] . " \n\t\t\t\t\tAND w.prize_id != '' \n\t\t\t\tORDER BY w.create_time DESC LIMIT 0,2";
     $q = $this->db->query($sql);
     $info = array();
     $member_id = array();
     while ($r = $this->db->fetch_array($q)) {
         $r['create_time'] = hg_tran_time_tv($r['create_time']);
         $info[] = $r;
         $member_id[] = $r['member_id'];
     }
     if (!empty($member_id)) {
         include_once CUR_CONF_PATH . 'lib/win_info_mode.php';
         $obj = new win_info_mode();
         $member_info = $obj->get_memberInfo($member_id);
     }
     $arr = $prize = $award = array();
     if (!empty($info) && $member_info) {
         $win_info = array();
         foreach ($info as $val) {
             foreach ($val as $k => $v) {
                 if ($k == 'member_id' && $member_info[$v]) {
                     $val['member_name'] = $member_info[$v]['member_name'];
                     $val['phone_num'] = $member_info[$v]['phone_num'];
                     $val['avatar'] = $member_info[$v]['avatar'];
                 }
             }
             $win_info[] = $val;
         }
         $award['win_info'] = $win_info;
     }
     $feedback = $data['feedback'];
     $prize_arr = $data['prize'];
     //unset($data['prize'],$data['feedback']);
     foreach ($prize_arr as $key => $val) {
         $chance = array();
         $chance = explode('/', $val['chance']);
         $arr[$val['id']] = $chance[0];
         if (!$sum) {
             $sum = $chance[1];
         }
     }
     $sum = $sum ? $sum : 1000;
     $prize_id = get_rand($arr, $sum);
     //根据概率获取奖项id
     if ($prize_id) {
         $prize = $prize_arr[$prize_id];
         $prize_indexpic = array('host' => $prize['host'], 'dir' => $prize['dir'], 'filepath' => $prize['filepath'], 'filename' => $prize['filename']);
         $award['id'] = $prize_id;
         //奖品名称
         $award['prize'] = $prize['prize'];
         //奖品名称
         $award['name'] = $prize['name'];
         //奖项名称
         $award['tip'] = $prize['tip'];
         //奖品名称
         $award['prize_indexpic'] = $prize_indexpic;
         //奖品索引图
     } else {
         $award['id'] = 0;
         //奖品id
         $feedback_count = count($feedback);
         $rand_num = mt_rand(0, $feedback_count - 1);
         $award['tip'] = $feedback[$rand_num];
         //奖品名称
         $award['name'] = '谢谢参与';
         //奖项名称
     }
     $this->addItem($award);
     $this->output();
 }