按照 百分比,求概率 PHP

0652012

找到百度能搜索到的:按照 百分比,求概率,都是一些比较混乱的代码。
找到一个看似能用的,大致看了一下,好像挺复杂的,仔细分析了一下代码,有很严重的Bug。

不如自己写一个了,拿出来分享一下吧,抛砖引玉啊。

php 版本的,当然 ,明白思路之后,别的语言的都很容易搞定。


假设 有四个选项:a 占 10%,b占20% ,C占30% , d 占 40% ,原理就是现获取随机数,然后找区间。
当然了,选项的数量可以任意。
目前默认是 总和是 100% 。如果需要别的数,修改 随机数的范围即可。
这个算法,比较简单,效率也还算高。

当然因为是 rand() ,所以产生的是伪随机数,不是真正意义上的随机,能凑合着用吧。
/*
   a b c d
1---------11--------------------30--------------------60------------------100
百分比 概率选择
  
*/
$data = array(
'a' => 10 ,
'b'  =>  20 ,
'c'  =>  30 ,
'd'  =>  40 ,
);
echo randomSelect(  $data  );

 function  randomSelect( &$array ){
 $datas = $array  ;
if(  !is_array($datas) || count($datas) ==   0  )
return ;
 asort($datas) ;   //按照大小排序  
 $random = rand ( 1 ,100); 
 $sum =  0 ;

   $flag =    '';
foreach(   $datas  as $key => $data   ){ 
  $sum += $dat a   ;
if(  $random <= $sum  ){
  $flag = $key ;
break ;
}
}
if(  $flag ==    '' ){       // 如果传递进来的值的和小于100 ,则取概率最大的。
 $keys = array_keys($datas) ;
 $flag = $keys[count($keys) -  1] ; 
}
return $flag;
}

jQuery、Javascript、CSS交流QQ群、jQuery教程交流群

0652012

几个jQuery、Javascript、CSS交流QQ群,有兴趣朋友可以加入讨论一下前端技术。

500人高级QQ群:
jQuery 自习室
7599526 (未满)

技术新手同学,提问之前,先到百度搜索一下:提问的艺术

jQuery api 1.7 , jQuery api 1.7.1 chm

1942012

jQuery API 1.7 CHM 中文帮助文档

.tk域名, 一个免费的、顶级域名、开放申请

0542012

一直以来,顶级域名都很贵。
比如 .com 在二级代理商那里,每年都需要缴纳 80元。别的很多域名更加昂贵。

今天发现 .tk 这个顶级域名居然是免费的。
据说,两年前 tk 域名不太稳定,时不时无法访问,!这两年好很多了,具体自己测试。

TK免费顶级域名除了支持转发外,已经可以设置A、CNAME、MX记录和修改DNS服务器!
支持域名转发(可隐藏原URL)、电邮转发、A记录解析、CNAME别名记录、MX邮件记录、设置DNS服务器等服务。

当然,一些很好的域名是要钱的,大部分是免费的。


注意事项:
如果你注册的域名在90天内访问量少于25个,你的域名将被删除!
如果你开通的电邮转发在90天内收到的邮件少于10封,你的电邮转发服务将被停止!

一个邮箱只能申请一个免费的域名,否则会被全部收回。

推荐申请好域名之后,再去国内注册一个免费提供服务器监控的网站,他们可以帮你每15分钟访问一次域名。
一劳永逸。


中文注册.tk域名官方地址:http://www.dot.tk/zh/


网址加密(URL加密)(RC4、PHP、密钥长度可变)

1832012

因为安全问题,我们需要网址加密。

网址加密是一个很广泛的需求,但事实上很难搜索到一个能用在项目中的完整案例。

百度,谷歌里面搜索:网址加密,可以找到有几种方法:

1、大量无用的垃圾信息。

2、大量垃圾的无用信息。

3、用Base64方式“加密、解密”。

4、自己开发的加密算法。

事实上,Base64算不上真正的加密,它仅仅是一种编码转换。

并且标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

 

我从来不建议 自己写的加密算法。

加密算法的安全性,绝不是靠算法的隐蔽来实现。现代密码学理论,“一切秘密寓于密钥之中”,安全来自于算法的安全和密钥安全。

历史已经反复证明:自己写的加密算法,经不住数学家的分析。

----------------

既然找不到一个实例,于是我决定自己选一个加密算法。

网址加密,有两个要求:在保证安全性的同时,时间代价要小、加密结果要足够短。

想到两个符合上述的条件的算法:AES 、RC4。

AES 是一种很优秀、流行的分组加密方法,但是他的加密结果比较长,哪怕你加密 一个字节的字符串,加密结果长度会超过30,并且随着加密数据的长度的增长,加密结果迅速增大,加密ID还行,对于加密比较长的字符串,确实有很多不便。

RC4 虽然很优秀、快速,安全,但是没有什么名分。

RC4 的加密后的结果长度相对要短的许多,在加密网址上,更胜一筹。

 

综合之下,我还是选取了没有 AES 出名的 RC4 来加密。


现在把这个 RC4的php实现方法发出来,方便大家吧。

第一步:下载 class.rc4crypt.php

第二步:

<?php
include('class.rc4crypt.php');
 $rc4  = new Crypt_RC4();
 $rc4  -> setKey('abcdefgh123456');

 $text  = 'julying';
echo  $x   = $rc4->e ncrypt($text); 
echo '<br />';
echo $rc4->decrypt( $x) ;
?>

 

 

.