存档

2009年6月 的存档

按指定概率随机抽取

2009年6月15日 1 条评论

$ar=array(‘a’=>30,’b'=>30,’c'=>10,’d'=>20,’e'=>10);
function myrandom($ar)
{
$ar_temp=array();
$temp=0;
foreach ($ar as $k => $v)
{
$ar_temp[$k]=array(‘min’=>$temp,’max’=>$temp+$v);
$temp+=$v;
}
$rand=rand(0,100);
$key=null;
foreach ($ar_temp as $k => $v)
{
if($rand>$v[min]&&$rand<=$v[max])
{
return $ar[$k];
break;
}
}

}

echo myrandom($ar);

[网络]换了你,你会杀了谁?

2009年6月9日 1 条评论

朋友拿了一份报纸要我作个实验,我同意了。

问题一:如果你知道一个女人怀孕了,她已经生了8个小孩子了,其中有3个耳朵聋,2个眼睛瞎,一个智能不足,而这个女人自己又有梅毒,请问,你会建议她堕胎吗?

我刚要回答,朋友制止了我,又问我第二个问题。

问题二:现在要选举一名领袖,而你这一票很关键,下面是关于3个候选人的的一些事实:

候选人A:跟一些不诚实的政客有往来,而且会星象占卜学。他有婚外情,是一个老烟枪,每天喝8到10杯的马丁尼。

候选人B:他过去有过2次被解雇的记录,睡觉睡到中午才起来,大学时吸鸦片,而且每天傍晚会喝一大夸特威士忌。

候选人C:他是一位受勋的战争英雄,素食主义者,不抽烟,只偶尔喝一点啤酒。从没有发生婚外情。

请问你会在这些候选人中选择谁?

我把答案写在纸上,然后朋友告诉我:

候选人A是富兰克林罗斯福,候选人B是温斯顿丘吉尔,候选人C是亚道夫希特勒。

我听了答案张大了嘴巴。朋友问我你是不是为人们选择了希特勒?那你会建议哪个妇女去堕胎吗?

我说:这个问题不用考虑,我们受优生优育教育多年了,都生那么多歪瓜劣枣了,就别在添乱了。我建议她去堕胎。

朋友告诉我:你杀了贝多芬,她是贝多芬的母亲。

我又一次张大了嘴巴。朋友说:吓一跳吧?本来以为你认为很好的答案,结果却扼杀了贝多芬,创造了希特勒?

最后的总结是:所以不要用既定的价值观来思考事物!

要是换做你们的话?你们会毁灭谁?创造谁?

不用中间变量交换两个变量值

2009年6月1日 没有评论

编程时,如果碰到需要交换两个变量的值,那么习惯做法是使用一个中间变量,但是这并不是必须的;
可以使用这样的方法:
int a,b;
a=值1;
b=值2;
//交换
a=a^b;
b=b^a;
a=a^b;
//此时,a
和b的值已经交换了;

证明:
a1=a0^b0;
b1=b0^a1=b0^(a0^b0)=a0^b0^b0=a0;
a2=a1^b1=(a0^b0)^a0=b0^a0^a0=b0;

应用的主要原理就是一个值经过同一个数的两次异或后值不变!