掷硬币问题

Categories: Uncategorized
Tags: No Tags
Comments: No Comments
Published on: 2011/07/11

这个blog更新的速度非常慢。原因之一是我把这个blog定位在跟技术或者学术沾边的内容,而另一个原因是我很懒。。。

这里讨论一个掷硬币问题:假如一个人要连续掷n (n>=1)次硬币,他可以掷大于或等于1的任意多次,并且可以随时决定是否停止。当他决定停止后,他会获得一定的收益,收益大小正比于掷硬币的结果中正面所占的比例。

例如:掷的第一次为反面,第二、三、四次都是正面。此时他认为得到的结果已经足够好了,决定停止。这次他的收益就为0.75。

另外还有个约束就是这个人的决策必须在期望有限的次数内停下。我们假设这个人足够聪明,采用最优策略使得收益的期望最大化。那么这个收益的期望是多少?最优策略是什么?

首先我们把这个问题符号化:
我们所做的决策,就是决定在什么时刻停止。假设某一状态下已经掷过m次硬币,其中有n次为正面(m >= n >= 0),条件期望收益函数f(m, n)表示在当前状态下得到收益的期望,那么该函数有如下递推表达:
f(m, n) = \max\{\frac{n}{m}, \frac{f(m+1,n+1) + f(m+1,n)}{2}\}

这个问题的难点在于f(m, n)的递推表达包含无穷多项。一种可行的数值解法是对问题中掷硬币的次数限制在N次以内。当N的值逐渐增大趋于无穷时,收益f(m,n;N)单调递增并趋于期望的收益。对于有限次数的问题可以通过动态规划算法求解,本文最后给出了我用C++写的数值计算程序。当N=1000000时,运算结果为0.792942。而且一个比较反直觉的例子是当连续掷三次出现两次反面的话仍然不应该停下来。

Ps: 这个问题是我在考虑一个信道估计的算法时抽象出来的一个问题的最简单情况。虽然转化成这个问题已经和原问题偏离很远了,但是感觉这个题目比较好玩,并且没有很显然的解,就在校内上提了出来。结果发现某姚班的同学在他的blog 阅微堂 中也提到过这个问题。
Ps2: 这里给出了数值计算并且进行了一定的优化。我的程序结果和他的数据略有出入,不清楚是因为有错误还是因为他的近似。100000的结果和阅微堂中的是吻合的。
Ps3: 这个问题是我去年11月份发出来的,到了今天拖了大半年了,可见我有多懒。。。

#include <iostream>
#include <iomanip>
 
using namespace std;
 
const int buffersize = 1000002;
int maxnum;
long double buf1[buffersize + 1];
long double buf2[buffersize + 1];
long double *benefit = buf1;
long double *postbenefit = buf2;
long double *temp;
inline void swap() {
    temp = postbenefit;
    postbenefit = benefit;
    benefit = temp;
}
 
int main() {
    long double b1, b2, dm;
    cin >> maxnum;
    dm = (long double)(maxnum);
    for (int i = 0; i <= maxnum; i++) {
        // benefit[i] = f(maxnum, i)
        postbenefit[i] = (i * 2 < maxnum) ? 0.5 : ((long double)(i) / dm);
    }
 
    long long count = 0;
    long long all = (long long)(maxnum) * (maxnum + 1) / 2;
    long long percent = 1;
    long long nextstep = all / 100 * percent;
    for (int m = maxnum - 1; m >= 0; m--) {
        dm = (long double)(m);
        for (int i = 0; i <= m; i++) {
            ++count;
            if (count > nextstep) {
                nextstep = all * percent / 100;
                cerr << percent << "%" << endl;
                ++percent;
            }
            // postbenefit[i] = f(m+1, i)
            b1 = (long double)(i) / dm;
            // (f(m+1, i+1) + f(m+1, i)) / 2
            b2 = (postbenefit[i + 1] + postbenefit[i]) / 2;
            benefit[i] = (b1 > b2 ? b1 : b2);
        }
        swap();
    }
 
    cout << setprecision(10) << postbenefit[0] << endl;
 
    return 0;
}

关于bitcoin的个人想法

Categories: Uncategorized
Tags: No Tags
Comments: No Comments
Published on: 2011/06/20

仅凭少量的的资料和直觉,我并不喜欢这个东西,主要有几个理由:

1.不环保,耗能大。为了分布式地保证安全性,要进行大量的运算,甚至bitcoin本身就是运算的结果。虽然有人说其他金融系统的维护也要消耗大量的能源。但是根据我粗略地估算这两个可能不在一个数量级上。不知道有没有人有可靠一点的数据

2.不可人为调控。很多人似乎觉得这是好事,但我觉得隐藏着很多致命的问题。目前的bitcoin就像是一个宝库,总共就那么多金子,然后大家拼命地找,肯定越来越难找,然后越来越值钱。越来越值钱的东西大家都想囤着,然后就不流通,这还是货币么。

也有可能将来没那么值钱了,然后找金子的花费超过它的价值,然后就没人愿意去找了。但是呢,bitcoin的交易维护也要依赖于mining(找金子)的过程,所以没人找金子这个系统就崩溃了,所以大家都不傻,将来这个系统靠谁维护呢?

可怕的是这东西又不能认为调控,所以不稳定,谁也说不好将来会什么样

3.数据安全

文件没了什么都没了,而且没救。普通个人pc又不是银行数据库,谁成天备份还要保证各种安全啊。黑客入侵,物理介质损坏,这种问题总是在所难免。安全性我个人还是比较质疑的,比如这两天不就出黑客盗窃海量BTC的事件么。

4.涉嫌欺诈

按照现在的汇率,初始拥有bitcoin的人将会相当于拥有一笔相当可观的财富,这个叫做炒作也好,欺骗也好,我觉得比较不靠谱

上面这些分析呢,仅靠感觉和少量估算。其实有那么一个数字化虚拟货币对于一个geek来说应该是一个比较令人兴奋的事情,但是我觉得现在这个系统还不够成熟。没准以后可能真有一个能够保证交易公平的虚拟化货币,还是很值得期待的。

清华百年校庆献礼——Matlab版老校歌

Categories: Uncategorized
Tags: No Tags
Comments: No Comments
Published on: 2011/04/21

当年上matlab课,要写个生成音乐的程序,我就写了这个老校歌。当时大作业里面的“电灯比油灯进步多了”那一段用于语音处理的音频想必很多电子系的兄弟姐妹记忆犹新吧。
当时交上去的版本其实还有很多我不满意的地方,某一年翻出来又给改了一下,用了shenhuanyan mm的某个程序里面的音色,修改了音符的轮廓,加了个颤。另外和声是依照的是何一林夫人版合唱谱。

没有matlab的同学可以直接听这个wav文件:Matlab老校歌

新的版本我还是比较满意的,程序如下 (保存为playlxg.m即可):

?View Code MATLAB
%% play "老校歌"
%% written by vichare@vichare.net
function y = playlxg()
global lxg;
if length(lxg) &lt; 5;
    rhythm1 = [1 1 3 5 5 6 1 6 5 5 3 3 5 3 1 6 1 3 5 6 6 6 1 5 3 2 3 2 1 2 5 5 14 5 6 6 7 6 5 1 1 6 1 5 6 5 6 6 5 3 2 2 3 5 1 1 1 3 2 3 2 1 6 6 5 3 2 2 3 1 1 1 6 6 5 5 6 5 2 3 5 1 1 6 6 5 5 6 5 2 3 2 1;
    0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0;
    1 0.5 0.5 1 1 1 0.5 0.5 1 1 1 1 0.5 0.5 1 1 0.5 0.5 2 1 1 0.5 0.5 1 1 1 0.5 0.5 1 1 1 0.5 0.5 1 1 1 0.5 0.5 4 1.5 0.5 1 1 1.5 0.5 2 1.5 0.5 1 1 1 0.5 0.5 2 1.5 0.5 1 1 1 0.5 0.5 2 1.5 0.5 1 1 1 0.5 0.5 2 1 3 1 3 1 1 1 1 1 1 2 1 3 1 3 1 1 1 1 1 0.5 0.5 2];
    rhythm2 = [5 1 3 3 6 6 5 5 1 1 3 1 5 6 6 1 7 4 4 4 3 1 7 1 7 1 7 2 2 2 1 1 1 7 3 3 4 4 3 4 3 4 1 2 1 7 7 1 7 5 5 5 1 7 7 5 1 1 2 1 7 7 5 3 3 1 1 3 3 4 2 7 1 7 3 3 1 1 3 3 4 2 7 7 5;
    -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 -1 0 -1 0 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 -1 -1 -1 -1 0 -1 -1 -1 0 0 0 0 -1 -1 -1 0 0 0 0 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 0 -1 -1 -1;
    1 1 1 1 1 1 1 1 1 1 0.5 0.5 1 1 0.5 0.5 2 1 1 1 1 1 1 0.5 0.5 1 1 1 1 1 1 1 1 4 1.5 0.5 1 1 1.5 0.5 2 1.5 0.5 1 1 1 0.5 0.5 2 1.5 0.5 1 1 1 1 2 1.5 0.5 1 1 1 1 2 1 3 1 3 1 1 1 1 1 1 2 1 3 1 3 1 1 1 1 1 1 2];
    rhythm3 = [3 3 5 1 1 6 6 1 1 5 5 1 5 3 14 4 4 5 1 1 1 6 1 5 5 5 4 3 5 7 7 7 14 4 4 5 5 5 1 1 1 1 1 1 4 5 5 5 5 5 3 3 3 5 5 4 3 4 4 5 5 5 4 3 5 5 4 4 1 1 1 7 5 5 5 5 5 4 4 1 1 1 7 5 5 4 3;
    0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0;
    1 0.5 0.5 1 1 1 1 1 1 1 1 0.5 0.5 1 1 0.5 0.5 2 1 1 0.5 0.5 1 1 1 0.5 0.5 1 1 1 1 1 1 1 1 4 1.5 0.5 1 1 1.5 0.5 2 1.5 0.5 1 1 1 1 2 1.5 0.5 1 1 1 1 2 1.5 0.5 1 1 1 1 2 1 3 1 3 1 1 1 1 1 1 2 1 3 1 3 1 1 1 1 1 0.5 0.5 2];
    rhythm4 = [1 1 1 1 4 4 1 1 1 1 1 1 2 2 2 5 4 4 4 1 1 5 5 1 7 7 2 2 2 2 2 5 1 1 4 6 1 1 1 4 4 7 1 5 5 5 1 1 1 1 5 5 1 4 4 7 1 5 5 1 1 1 4 4 1 1 4 5 5 5 5 1 1 4 4 1 1 4 5 5 5 1;
    0 0 0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 0 0 -1 -1 0 -1 -1 0 0 0 0 0 -1 0 0 -1 -1 0 0 0 -1 -1 -1 0 -1 -1 -1 0 0 0 0 -1 -1 0 -1 -1 -1 0 -1 -1 0 0 0 -1 -1 0 0 -1 -1 -1 -1 -1 0 0 -1 -1 0 0 -1 -1 -1 -1 0;
    1 1 1 1 1 1 1 1 1 1 1 1 1 0.5 0.5 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1.5 0.5 1 1 1.5 0.5 2 1.5 0.5 1 1 1 1 2 1.5 0.5 1 1 1 1 2 1.5 0.5 1 1 1 1 2 1 3 1 3 1 1 1 1 1 1 2 1 3 1 3 1 1 1 1 1 1 2];
    y1 = generaterhythm(rhythm1, 3); % in bE tune
    y2 = generaterhythm(rhythm2, 3); % in bE tune
    y3 = generaterhythm(rhythm3, 3); % in bE tune
    y4 = generaterhythm(rhythm4, 3); % in bE tune
    %plot(y);
    lxg = (y1+y2+y3/2+y4/2)/3;
    sound(lxg); % play it!
    %wavewrite(lxg, 8000, 'lxg.wav'); % write to file
else
    sound(lxg); % play it!
end
 
%% generate a piece of rhythm
function y = generaterhythm(rhythm, basetune)
% GENERATERHYTHM function.
% rhythm is a 3 * len matrix
% for each column, the element on the first row
% shows the 'sound name' of one tune, the one
% on the second row shows the sound step of that tune,
% and the one on the third row shows how long
%in seconds it should lasts.
fs = 8000;
soundpos = [0 2 4 5 7 9 11 0:12];
y = zeros(1, sum(rhythm(3,:))*fs + 1); % initialize
curpos = 1;
for count = 1 : length(rhythm)
cursoundname = rhythm(1, count);
cursoundpos = soundpos(cursoundname);
curfreq = 220 * 2 .^ ((cursoundpos + basetune + 3) / 12 + rhythm(2, count));
cursound = generatetune(curfreq, rhythm(3, count), fs);
y(1,curpos:(curpos + length(cursound) - 1)) = cursound;
curpos = curpos + length(cursound);
end
 
%% generate a piece of sound with the frequence of freq
function y = generatetune (freq, time, fs)
y1 = generatetune2 (freq + 3, time, fs);
y2 = generatetune2 (freq - 3, time, fs);
y3 = generatetune2 (freq, time, fs);
y = (y1 + y2) / 8 + y3 * (3 / 4);
 
%% generate a piece of sound with the frequence of freq
function y = generatetune2 (freq, time, fs)
c = [ 1 0.2 0.4 0.08 0.2 0.05 0.1 0.04 ];
t = 0:1/fs:(time - 1/fs);
y = zeros(1, length(t));
for k = 1 : 8
    y = y + c(k) * sin(t*k*freq*2*pi);
end
%%y = 0.6 * sin(t*freq*2*pi) + 0.1 * sin(t*freq*4*pi) + 0.2 * sin(t*freq*6*pi);
for count1 = 1 : length(y)
    y(1, count1) = y(1, count1) * amendment(count1 / 2000, length(y) / 2000);
end
 
%% amendment of the shape of the wave
function y = amendment(p, l) % 0 &lt;= p &lt;= 1
if p &lt; 0.2
y = p * 5;
elseif p &lt; 0.3
y = 1.8 - p * 4;
else
    y = 0.6 * exp((0.3 - p)/5);
%%elseif p &lt; (l - 0.2)
%%y = 0.6;
%%else
%%y = (l - p) * 3;
end

转载新闻二则:P≠NP有望得证 魔方问题告破

Categories: Uncategorized
Tags: No Tags
Comments: 1 Comment
Published on: 2010/08/10

来源:http://www.matrix67.com/blog/archives/3520

昨天的消息:一位 HP 的研究员 Vinay Deolalikar 宣称自己证明了 NP 问题,得出了 P≠NP 的结论。 P 是否等于 NP ,这是计算机科学领域中最困难的问题之一,也是意义最深远的问题之一,长期以来一直备受争议。如果这个问题获得解决,将会在各个科学领域中引起轰动。 Vinay Deolalikar 的整个证明有 100 多页,详细的论文可以在这里看到:

http://www.win.tue.nl/~gwoegi/P-versus-NP/Deolalikar.pdf

Stanford 的博士后 randomwalker 看完证明后表示,很多迹象表明,这个证明很有可能是正确的。

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

今天早晨的消息: Morley Davidson 、 John Dethridge 、 Herbert Kociemba 和 Tomas Rokicki 宣称,他们已经利用计算机,完美地解决了魔方问题。他们验证了,任何一种魔方的初始状态都可以在 20 步以内解出。他们将 43,252,003,274,489,856,000 种初始状态分为了 2,217,093,120 组,再利用对称性和集合覆盖将规模缩小到了 55,882,296 组。他们的程序可以在 20 秒左右求解出一组问题的解法,最终利用 Google 提供的强大的计算机,彻底解决了魔方问题。
利用组合数学,我们能够证明,存在一种魔方初始状态,它需要至少 18 步才能解决。 1995 年, Michael Reid 找到了一种最少需要 20 步才能获解的魔方初始状态,因而将魔方问题的下界提高到了 20 。此后,数学家们猜想,任意给定一个魔方的初始状态,最多 20 步就能解决。 2008 年, Tomas Rokicki 和 John Welborn 证明了,任意一个魔方初始状态都可以在 22 步以内解决。 2010 年 7 月,这个上界终于降低到了 20 ,从而完成了对魔方最优解问题数十年来的探索。
详细的研究成果见这里:

http://www.cube20.org/

简化版的优化问题

Categories: Uncategorized
Tags: No Tags
Comments: No Comments
Published on: 2010/07/02

提问:一个优化问题一文中提出了一个5种属性点的分配问题。如果n=2,并且假定没有主属性和副属性相同的技能,也就是只有两种属性,那么问题可以简化到很容易求出解析解。

问题描述:

\mathrm{min} \frac{A_1}{2p_1+p_2}+\frac{A_2}{p_1+2p_2}

\mathrm{s.t.}p_1+p_2=C, p_1, p_2 >= 0

定义F(p_1, p_2, \lambda) = \frac{A_1}{2p_1+p_2}+\frac{A_2}{p_1+2p_2}-\lambda(p_1+p_2)

\frac{\partial F}{\partial p_1}=-\frac{2A_1}{(2p_1+p_2)^2}-\frac{A_2}{(p_1+2p_2)^2}+\lambda=0\frac{\partial F}{\partial p_2} = -\frac{A_1 }{(2p_1+p_2)^2}-\frac{2A_2}{(p_1+2p_2)^2}+\lambda=0

那么有:\frac{A_1}{(2p_1 +p_2)^2}=\frac{A_2}{(p_1+2p_2)^2}

k= \sqrt{\frac{A_1}{A_2}},则:

k= \frac{2p_1+p_2}{p_1+2p_2}

So, \frac{p_1}{p_2}=\frac{2-k}{2k-1}

无题

Categories: Uncategorized
Tags: No Tags
Comments: No Comments
Published on: 2010/06/28

前一段时间发现blog未注册用户不能回复。询问了一下maoz同学,告知可能是Akismet的问题。果然关了之后就好了,多了几条垃圾评论。

提问:一个优化问题

Categories: Uncategorized
Tags: No Tags
Comments: 2 Comments
Published on: 2010/04/21

问题来源于网游:星战前夜的技能训练系统。
假定一个人物有n种属性点,特别的,n =5。设这n种属性的值分别为P_i, i=1,2,3,4,5。游戏中有若干技能,每种技能对应一种主要属性和一种次要属性。属性点初期可以自由分配,其总和为C ,即:C =\sum\limits_{i=1}^5P_i。技能按照主、副属性的类型分成 n^2 类,,其中主、副属性分别为i ,j的技能的总技能点数为 A_{i, j}。技能的训练时间和该技能的点数成正比,和主属性点数的2倍加上副属性点数的值成反比,即:T_{i,j}=\frac{A_{i,j}}{2P_i+P_j}。现在给定C  A_{i,j},求非负的 P_i,使得技能训练总时间T=\sum\limits_{i,j=1}^5T_{i,j}最短,即:
\mathrm{min} \sum\limits_{i,j=1}^5\frac{A_{i,j}}{2P_i+P_j}

s.t. \sum\limits_{i=1}^5P_i=C

P_i \ge 0 , i=1,2,3,4,5

PS:此帖是为了测试latex for wordpress

使用Gmail高级搜索功能

Categories: Uncategorized
Tags: No Tags
Comments: No Comments
Published on: 2010/04/14

前两天想找一封很久很久以前的邮件,只是依稀记得一些特征,要想从那么多邮件中一页一页人肉搜索过于麻烦了,所以去查了一下Gmail的高级邮件搜索格式。Gmail提供了一个官方帮助页面
在邮件搜索中除了用空格隔开的关键词以外还可以加入如下搜索选项:

  • from: 和to: ,用来指定发件人或者收件人。cc:和bcc:用来指定抄送人和密件抄送人;
  • subject: 用来指定搜索主题内包含特定关键词的邮件;
  • after: 和before: 用来指定日期范围。如after:2010/1/1 before:2010/1/31 用于搜索2010年1月的邮件;
  • is: 用来指定特定选项,包括:is:unread, is:read, is:starred, is:chat
  • in: 用来指定特定标签,除自定义标签外还包括:in:inbox, in:sent, in:, in:chats, in:starred。实际上,in:和is:是通用的。还有一个in:anywhere表示搜索包括spam和trash在内的所有邮件,因为默认搜索是不包含的;
  • has:attachment 用来指定含有附件的邮件;
  • 还有一些运算符:减号- 用来排除满足某个搜索条件(似乎和叹号!通用),全大写的OR 用来表示左右两个元素的或关系(和|,||通用),()用来组合搜索选项,""用来包含精确搜索关键词;
  • list:用来指定发件人或收件人列表中出现的邮箱;
  • filename:用来指定含有附件的文件名;
  • deliveredto: 用来指定header中deliveredto项出现的特定邮箱(当搜索从其他邮箱转发来的邮件时会起作用)

举两个例子:
(from:lonnie !in:chats) OR in:starred 搜索来自lonnie同学的邮件(而非聊天记录)或者加星标注的邮件。
抢购 OR 发票 in:anywhere 搜索包含垃圾邮件和删除箱内的邮件中包含这两个关键词的邮件

星际争霸2 单机AI破解版 安装攻略

Categories: Uncategorized
Tags: No Tags
Comments: No Comments
Published on: 2010/03/01

相关下载在如下帖子可以找到:

http://3dmgame.chnren.com/bbs/showtopic-1140190.html

清华的同学可以登录我的ftp://166.111.135.64/,有ip限制。请在非工作时间下载。

1.首先安装原始版;

2.通过自动升级,或者下载覆盖升级包升级到0.3.0.14093;

3.解压lazylaunch.exe文件到星际根目录下,目前有2个版本

4.解压Triggerlibs目录到星际根目录下

5.运行lazylaunch.exe,选择任一地图文件

不出意外的话,已经可以和AI对战了。在网上能找到各种AI包,可以选择面对不同难度的电脑。

点评:哥本哈根;魔兽世界

Categories: Uncategorized
Tags: No Tags
Comments: 1 Comment
Published on: 2009/12/24

哥本哈根

在google输入“哥本哈根”,出现的建议搜索第一条就是“哥本哈根会议结果”。全世界人都在关注的一场会议变成了政治小丑们的演出。很多人一开始就断言这个会议不会有什么好的结果,但是总是有很多人期待奇迹,就像“巴厘会议”那样的奇迹。从最后一周会议组织方的行为也可隐约推断出,奇迹不会发生第二次了。哥本哈根会议成了彻头彻尾的闹剧。
前两天-1还说起过,问我觉得NGO的行为会对大会结果产生影响吗?我说当然会了,至少NGO的行为可以影响民意,民意可以影响政府决策。-1反问,能吗?我说,当然然能,哦,不过中国除外。-1与我相视一笑,说他默认说的就是中国。恩,中国除外。

魔兽世界

在大学与世隔绝的环境中许久没看过电视了。据说最近央视又在炮轰魔兽世界,经历了“天才变魔兽”说,“毒品”说,加上这次的“抢劫犯”说,数位砖家叫兽成为了知名人物。在中国就得学着低着头做人,你看看人家Google,到了中国还不是说你黄你就黄不黄也黄。光低头还不行,这次惹到两位大人物了,虽说人家是在互相掐架,但是你这个导火索是免不了灾殃了。
话说还真不知道这次拿魔兽开刀背后隐藏着什么动机。反正给出的理由很滑稽,因为玩魔兽世界孩子变成抢劫犯了。全国那么多抢劫犯不说,偏说一个玩魔兽世界的。哪怕你说有87.53%的抢劫犯玩魔兽世界,或者玩魔兽世界的人中抢劫犯的比例比去全国的抢劫犯比例高出87.53个百分点,也算是提出了一个论据。现在这个说法比GRE argument弱多了。
想象一下一个小孩子放学回家路上捡到了一个水果刀,他捡起来揣兜里了,然后回家用这把水果刀把他父亲杀了。那么现在问,他杀死他父亲的主要原因是什么?可能是因为家庭的原因,可能是这个孩子本身就有暴力倾向,但是会是因为水果刀的缘故吗?难道全国要因为这个禁止出售水果刀?现在的家长为了推托责任,把这一切都怪在了魔兽世界上,是的,因为阿尔萨斯。哪怕这个孩子不知道阿尔萨斯是谁,但你描写了这个情节,就间接地诱导了犯罪,你就是罪魁祸首。这个世界上最可怕的逻辑就是不讲逻辑。
(more...)

page 1 of 5»

Welcome , today is Tuesday, 2012/01/31