随机数生成概率一解(2 位领导批示)
- 2010-05-20
- 分类:PHP&MySql
- 作者:银子
- 819 位领导视察
比较常见的方面是把随机数生成为一个数组. 不过随机数比较多的情况下产生的数组也会特别大.
下面是另一种算法:
比较常见的方面是把随机数生成为一个数组. 不过随机数比较多的情况下产生的数组也会特别大.
下面是另一种算法:
原题地址: http://bbs.blueidea.com/viewthread.php?tid=2982704
先计算 AC 的弧度, 然后将弧度转换为角度.
放出腾迅微博邀请码一枚 拿到的朋友请回复一下.
http://t.qq.com/invite/1385974e
DECIMAL和NUMERIC其实是视为相同的类型. 值是作为字符串存储, 而不是作为二进制浮点数. 这样就避免了FLOAT类型计算时出现的错误.
工作经常会用到的一个分页类..记录一下.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 | /** Example: $page = (isset($this->params['named']['page'])) ? $this->params['named']['page'] : 1; // 导入分页类 App::import('Vendor', 'page_class'); // 获取公告总数 $total = $this->Bulletin->getBulletinTotal(); $perpage = ITEMPREPAGE; $offset = $perpage * ($page - 1); $pagebar = new Pagebar($total, $page, $offset, $perpage); $pagenav = $pagebar->construct_page_nav($total, $page, SYSTEMURL . '/bulletins/index', null, null); */ <?php class Pagebar { var $perpage = 20; /** * Ensures that the variables for a multi-page display are sane * * @param integer Total number of items to be displayed * @param integer (ref) Current page number * @param integer (ref) Desired number of results to show per-page */ function Pagebar($numresults, &$page, &$limitlower, $perpage) { $this->perpage = $perpage; $numpages = ceil($numresults / $this->perpage); if ($numpages == 0) { $numpages = 1; } if ($page < 1) { $page = 1; } else if ($page > $numpages) { $page = $numpages; } $limitlower = ($page - 1) * $this->perpage; $limitupper = ($page) * $this->perpage; if ($limitupper > $numresults) { $limitupper = $numresults; if ($limitlower > $numresults) { $limitlower = ($numresults - $this->perpage) - 1; } } if ($limitlower < 0) { $limitlower = 0; } } /** * Returns the HTML for multi-page navigation * * @param integer Total number of items found * @param integer Page number being displayed * @param string Base address for links eg: q.php?t=99{&page=4} * @param string Ending portion of address for links * * @return string Page navigation HTML */ function construct_page_nav($results, $pagenumber, $address, $address2 = '', $option = array()) { $perpage = $this->perpage; $show = array(); $curpage = 0; $pagenav = ''; $firstlink = ''; $prevlink = ''; $lastlink = ''; $nextlink = ''; if ($results <= $perpage) { $show['pagenav'] = false; return ''; } $show['pagenav'] = true; $total = number_format($results); $totalpages = ceil($results / $perpage); $show['prev'] = false; $show['next'] = false; $show['first'] = false; $show['last'] = false; if ($pagenumber > 1) { $prevpage = $pagenumber - 1; $prevnumbers = $this->fetch_start_end_total_array($prevpage, $perpage, $results); $show['prev'] = true; } if ($pagenumber < $totalpages) { $nextpage = $pagenumber + 1; $nextnumbers = $this->fetch_start_end_total_array($nextpage, $perpage, $results); $show['next'] = true; } // create array of possible relative links that we might have (eg. +10, +20, +50, etc.) $pagenavsarr = array(10, 50, 100, 500, 1000); $pagenavpages = 5; while ($curpage++ < $totalpages) { if (abs($curpage - $pagenumber) >= $pagenavpages AND $pagenavpages != 0) { if ($curpage == 1) { $firstnumbers = $this->fetch_start_end_total_array(1, $perpage, $results); $show['first'] = true; } if ($curpage == $totalpages) { $lastnumbers = $this->fetch_start_end_total_array($totalpages, $perpage, $results); $show['last'] = true; } // generate relative links (eg. +10,etc). if (in_array(abs($curpage - $pagenumber), $pagenavsarr) AND $curpage != 1 AND $curpage != $totalpages) { $pagenumbers = $this->fetch_start_end_total_array($curpage, $perpage, $results); $relpage = $curpage - $pagenumber; if ($relpage > 0) { $relpage = '+' . $relpage; } $pagenav .= "<a onclick=\"$option[onclick]\" class=\"smallfont\" href=\"$address". "/page:$curpage". ($address2 ? '?'.$address2 : '') . "\" title=\"显示结果从 $pagenumbers[first] 到 $pagenumbers[last] 共计 $total 条\"><!--$relpage--> $curpage </a>"; } } else { if ($curpage == $pagenumber) { $numbers = $this->fetch_start_end_total_array($curpage, $perpage, $results); $pagenav .= " <span class=\"smallfont\" title=\"显示结果从 $numbers[first] 到 $numbers[last] 共计 $total 条\"><strong> $curpage </strong></span>"; } else { $pagenumbers = $this->fetch_start_end_total_array($curpage, $perpage, $results); $pagenav .= "<a onclick=\"$option[onclick]\" class=\"smallfont\" href=\"$address". "/page:$curpage". (($address2) ? '?'.$address2 : '') . "\" title=\"显示结果从 $pagenumbers[first] 到 $pagenumbers[last] 共计 $total 条\"> $curpage </a>"; } } } $pagenav = " <span class=\"disabled\"> ".(($show['prev']) ? ("<a onclick=\"$option[onclick]\" class=\"smallfont\" href=\"$address".("/page:$prevpage".($address2 ? '?'.$address2 : ''))."\" title=\"上一页 - 结果从 $prevnumbers[first] 到 $prevnumbers[last] 共计 $total\">上一页</a></span>") : ("上一页</span>"))." $pagenav ".(($show['next']) ? ("<span><a onclick=\"$option[onclick]\" class=\"smallfont\" href=\"$address/page:$nextpage".($address2 ? '?'.$address2 : '')."\" title=\"下一页 - 结果从 $nextnumbers[first] 到 $nextnumbers[last] 共计 $total\">下一页</a></span>") : ("<span>下一页</span>"))." <span>第 $pagenumber / $totalpages 页,共 <strong>$total</strong>条记录</span>"; return $pagenav; } /** * Returns an array so you can print 'Showing results $arr[first] to $arr[last] of $totalresults' * * @param integer Current page number * @param integer Results to show per-page * @param integer Total results found * * @return array In the format of - array('first' => x, 'last' => y) */ function fetch_start_end_total_array($pagenumber, $perpage, $total) { $first = $perpage * ($pagenumber - 1); $last = $first + $perpage; if ($last > $total) { $last = $total; } $first++; return array('first' => number_format($first), 'last' => number_format($last)); } } ?> |
因为最近比较忙,很久没更新博客了,草草几行,记录近期工作
公司
1. 年终晚会抽奖程序 AS3编写 基本完成
2. 内部系统(保密) PHP编写
个人
1. 歪藕 目前还是构思阶段,有部分数据供搜索引擎抓取.
2. 某地区人才网站, 代码编写中,计划用PHP开发, 前期准备工作基本完成, 预期用时为三个月.
explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句.
使用方法:在select语句前加上explain. 如 EXPLAIN SELECT * FROM `users`
Explain 列的解释:
table 显示这一行的数据是关于哪张表的
type 这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
possible_keys 显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
key 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引
key_len 使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref 显示索引的哪一列被使用了,如果可能的话,是一个常数
rows MYSQL认为必须检查的用来返回请求数据的行数
Extra 关于MYSQL如何解析查询的额外信息。这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢
问题链接:http://bbs.blueidea.com/thread-2957105-1-1.html
我是使用GD的 imagefilledrectangle 函数来实现的. 不知是否有更好的解法
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $im = imagecreate(255, 255); $bg = imagecolorallocate($im, 0, 0, 0); for($i=255; $i>=0; $i--) { $color = imagecolorallocate($im, $i, $i, $i); imagefilledrectangle($im, 0, $i, 255, 1, $color); } header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?> |