洗牌云风的 BLOG » Che, Dong's shared items in Google Reader

今天从 svn 中取下一个同事的代码,浏览了一下。其中一段是关于洗牌的。感觉实现的很乱,算法也没有选好。自己重新写了一个。

因为国庆的缘故,负责这块代码的同事提前回家了。我只好自己读代码实现。看完后,发现旧的实现是这样的:对于 N 张牌,每次随机抽出一张来,检查这张牌是否抽过。如果被抽取过,就重复抽取过程,直到不重复。然后记录下抽取的牌的位置。重复这个过程,直到得到一个随机序列。最后用这个序列将原始排列打乱。

这个方案给我的第一感觉并不好,因为当 N 较大时,最后需要重复抽取多次才可以成功。我估算了整个的时间复杂度大约是 O(N^2)

当然,洗牌这件事情可以有许多算法来解决。我重新写了一个,采用了最简单实现的方案。

新的方案是从牌套里随机找到两个位置,将其位置的牌交换。重复若干次后,便可以将牌洗乱。这里最关键的是需要找到一个合适的重复次数。

这个问题首先需要定义什么叫作“洗乱”。

我随便给出了一个定义:在洗牌过程中,任意一张牌不被抽到交换的概率小于 1/1000 。(这个定义不太符合直观感觉,这个下面会讨论)

简单的列出方程:( (n-2)/n ) ^ m <=1/1000 得到 m >= -3* ln 10 / ln (1-2/n)

对于 52 张牌,大约是 176 次。


之后,另一个同事给了我另一个方案。产生 N 个不易发生碰撞的随机数,比如 (0,1) 的浮点数,或是 [0,4G) 的整数。将这些数字排序,则可以得到一个被打乱次序的序列。

这个方案看起来更好,因为更接近洗乱牌的目的。我重新给一个“洗乱”的定义:每张牌在每个位置出现的概率相同。

反过来,我想知道前面我给出的交换法洗牌有多接近它。

要得到严格的数学分析似乎很困难。偷懒 google 了一下,原来好多人研究过类似问题了。看这里:

http://mathworld.wolfram.com/Shuffle.html

从这个链接找过去,有一篇论文 。它讨论了另一种类似的洗牌方法,即第一次把第一张和随机一张牌交换,第二次把第二张和随机一张牌交换…… 重复做 N 次。

当 N 大于等于 18 时,用这个方法洗牌后,居然恒等排列(identity permutation)是最有可能出现的。(所谓恒等排列大概是指第 n 张排在第 n 个位置)。论文太长没精力读,不过这个结论还真是让人惊奇啊。

13:33 Mozy被收购 » We make art not money
喜欢的应用Mozy是被收购了,这几乎是预料中的事情,只是时间早晚。关键是能够在被收购前能够专心按照自己的愿景去实现相关的创新,建立用户的信任,至于资本的事情,都是可遇不可求的。经常有创业者问,多长时间能融到资,这几乎是不可能回答的问题。早期的创业者经常有迷思,夸口自己可以在某某时间可以完成融资,完成上市,最后却无法兑现“诺言”。而那些小而精的目标,往往更加有穿透力,能够在用户的支援中获得进一步的蛙跳(Leapfrog)。

当然,我觉得在线备份还有更多机会,除了Mozy的方法,还有创新的必要。例如是否可能让用户更简单地操作就能够把自己的数据备份到不同的服务器(可能是本地的两台电脑),这样的情景需求是存在的。也许中国的创业者也有机会,如果不是还在拷贝猫中做梦。

// 刚刚听说Blogger.com在国内又被河蟹了,不知道是否是真的。功夫网这些愚蠢的行为破坏国家的创新不说,还自灭未来。西谚说:“Give one enough rope to hang oneself(给人足够长的绳子会把他自己吊死)”,和中国的玩火自焚说法差不多。
13:16 ASK ME,产品设计的评测 » 以用户为中心的设计

上周去北师大、北邮、北理工三所高校作了题为“我的UCD思考”的小演讲(10.1以后还可能会去北大)。在学校里和大家的交流很有收获,让我对于国内UCD行业未来的发展和良好的人才储备更加充满期望。
回顾在三所高校中同学们提到的问题,结合我最近收到的一些咨询邮件,总结几个关于“产品设计和评估”的常见问题如下:

问题一,产品设计到了什么阶段才可以开始测试?是不是最早也要到有了高保真的界面原型才能开始测试?
1、这个说法是不对的,产品设计的任何阶段都可以进行测试,只要条件允许也都应该进行测试;
2、什么时候进行测试,其实取决于你对于产品有什么样的问题,只要你有问题都应该去做;
3、具体说一个例子:你现在要设计一个IM软件,和QQ基本相似;
那么,哪怕是在你的产品设计之初,只有简单想法还没有任何具体界面设计的时候,如果你有拿不准的问题一样可以通过测试解决。
你可能会问“我什么都没有,拿什么去测?”。“拿QQ呗”;
再往后,“纸原型”、“可简单演示的低保真原型”、“可互动的高保真原型”、“beta版本”都可以去做。
4、补充一下:我说到的“测试”不局限于“找用户来作”,一样包括“访谈”和自己的“评估”。

.

问题二,我们现在没有完善的“可用性实验室”,没有好的环境如何客服测试的问题?测试中您认为关键的问题有那些?

1、首先,产品的测试和评估并非一定要在实验室进行。测试应该是随时随地的,作为一个设计师必须要具备随时随地观察相关用户使用过程的“习惯”,这也是一种测试。
2、不得不说很多“科学”仪器和实验室“装备”都是极其“科学”的,但是否实用?甚至说是否有用?我持反对观点。

3、我个人认为作产品测试最关键的点有5点:测试的准备、测试的方法、被测的人、测试的人、测试的环境;
所谓“测试的准备”主要指“明确测试的目的性”和“准备测试的问题”。往往我们很容易搞清楚自己“为什么测试”,目的性都不是什么大问题;
但,“测试之前没有充分准备‘问题’测试中随机应变,导致测试结果大多没有什么价值”,这是大多数“经验丰富”之人常犯的错误,所以我建议:“在整个测试项目中,用50%的时间去做准备工作”;
然后,如何准备问题也是非常重要的。比如,一个关于语音搜索的产品测试,可以“从以往用户的录音中提炼问题来测试”而不要用“给话务员培训的对答脚本”来测试;
还有,某领导往往喜欢用自己遇到的问题去测试,当我提到“这不一定是用户的问题”时,领导反倒理直气壮的告诉我“我就是用户呀”,我只能回答他:“在咱们自己的产品面前您只能是领导,不是用户”…

关于“测试的方法”这个其实很简单,相信大多数科班出身的人都能很好的掌握。我只想不中听的提醒纯“心理学”专业的同学:站在“产品设计”的角度测试,而非纯粹的“心里测试”角度测试。
这么说只是因为我遇到不少“心理学”专业的朋友,他们给了我这种感觉,导致一些测试结果对于“产品”本身的直接意义很小。(并非说完全没有作用)

被测的人”指“如何明确自己产品的针对性用户群,如何找到准确的典型用户”。这些都是我们成天提到的东西,无需我来讲;
往往“如何让被测者很好的与系统和测试者进行交互”其实是最大的课题,当你遇到一个“死活不说话、测试过程紧张无比”怎么都无法从他那里得到有效信息的被测者时,“暂时把话题扯开谈谈轻松的事情、聊聊家长、说说他喜欢的话题、甚至讲讲小笑话”都会是不错的做法。。。

测试的人”我就不说了,只有一个建议:测试的人和总结测试报告的人要是同一人。

测试的环境”是我最想强调的,这也是我个人一直不支持“在实验室”里测试的主要原因之一;我见过很多实验室设计的太“不自然”了(设计合理的实验室倒还好),用户在测试中根本没有平时使用的感觉;
我个人一般比较支持“低成本”的更加自然的测试环境,尽量不要改变用户平时用户的环境,只作为一个让他没有感觉到的“旁观者”或者“偷窥者”更合适。
还比如,测试一个语音搜索产品的话务员操作系统,“把话务员“关”到严肃的实验室用个大摄像头对着他,自己龟缩在单面玻璃后面”的“科学”方式,还不如“去话务员工作的地方,把话务员的显示器切为双屏显示,通过另外的耳机旁听话务员正常工作”效果更好。

.

问题三,在应用用户测试的结果上能不能给我们一些建议?
wow!这个问题比较大,很多理论性的做法已经很多地方可以看到相关资料了。我想说点主要的:
1、首先,再强调一下“测试和评估之前的准备工作十分重要”,往往我们的测试可能有两种情况──
第一种:你设计了两个杯子,你认为第一个设计比第二个设计好,你需要通过测试来验证你的观点;
第二种:你设计了两个杯子,你不知道那一个更好,你需要通过测试来得到答案;
如果你明确了你的目的,然后又做了充分的准备,我想“提炼结果”应该不是大问题。
2、不是所有用户说的都是对的,以用户为中心不等于“用户怎么说就怎么作”。
我见过一个人,测试中用户说“我觉得这个地方全部展开不好,太占空间了,应该收缩到下拉菜单里”,用户一走他马上就心花怒放的去改了。问他为什么?他告诉我:“这是用户说的”!
第二天又测试了一个用户,这个用户说“这个地方其实很重要,收缩起来可能找不到,你应该给展开”。他晕了,问我“怎么办?”,我回答他:“我不是用户,”。
3、其实我想说:“把用户的测试当作意见来源,而非指示来源。
既然是意见就需要‘筛选’”,“提炼用户研究的结果最关键还是你自己的思考和辨别能力”,这种能力只能靠“你比任何人都更深入理解产品和用户”。同我回答“如何做好搜索引擎的用户研究?”一样:最基础的还是“至少每天搜索200个字以上”。

.

问题四,“专家评估”是不是就是站在产品专家的角度去使用产品,然后总结出来设计的问题?
和我们作启发式评估不同,启发式评估往往完全可以对产品没有任何了解,就只是用户的角度去作即可;但专家评估往往是站在专家的角度“用用户的模式思考”。
我个人一直比较主张:“专家评估”之前一定要熟悉“产品架构和业务流程”,因为你提出的不应该只是“用户的问题”,还得包含“产品的因素”,这样才能很好的直接应用。

专家评估的问题总结需要有技巧性,尽量要让问题的表现更加明了而且要出来修正的办法。我自己往往会用PPT的方式,先把问题分类然后再展示问题表现、问题分析、危险程度、修正办法等

.

问题五,当数据统计和用户访谈结果出现不一致时,应该怎么选择?
呵呵,这个问题听起来比较棘手;
1、首先我建议你去找一找数据统计或用户访谈在什么地方出错了;
2、我向来认为“数据”和“用户”是两个互相依赖的部分,数据是支撑用户结果的依据,用户可以找到数据现象发生的缘由;
3、往往我们只看数据不知道“这是为什么”,这个时候我们需要通过和用户的接触去了解数据现象背后的原因;如果只靠数据就下一个背后原因的结论,大多数时候是很危险的;
4、往往我们只根据用户反应的情况,就去作一个大改动也是不合适的,因为他可能是片面的,这个时候我们需要用数据去论证他。

.

.

最后,总结一下:
1、产品的任何阶段都可以进行测试,无需等待完整的设计完成之后;
2、测试和评估是随时随地的;
3、不一定在实验室的测试和评估就更好,我个人比较排斥那种“不自然”的方式;
4、把“数据”和“用户”相结合很重要;
5、作专门测试项目时,拿出50%的时间作准备工作;
6、测试的目的:验证观点或者得到观点;
7、读懂数据和提炼用户测试结果的基础是:深入理解自己的产品和用户。

转载请注明出自UCDChina.com,谢谢。

相关文章

09:00 学传媒的人,一定要学经济学 » It Talks-魏武挥的blog

师姐闾丘露薇在my1510上建了一个题为“新闻课堂”的圈子。这个圈子里的作者和作品,基本上都是她在浸会大学Current Issues and Case Studies in International News课程的学生。挺不错的构想,教育2.0。我注意到在一份习作中,有位网友留言说:

似乎有一些经济基础的人看了以后才会有些反应和想法。

问题:传媒人员是否应该硬性要求进修经济?

单从字面上看,我不知道这位网友对学传媒的人是否应该学经济学持何观点。但这个留言,结合我最近的一件事,倒是让我颇有一些感慨。

台湾政大的罗文辉教授近日到访上海交大媒体与设计学院,就他关于“置入性营销”这个问题的研究做了一次讲座。在他的定义中,新闻和广告的混杂(俗称软文)就是一种置入性营销。不止台湾,大陆这方面的例子也实在太多了,我就不想一一罗列。

我也受过标准的新闻专业主义的教育,很清楚新闻一旦被做成软文会是怎样的一个悲惨结局。但不同于很多一直在书斋里待着的研究者,我深知这是无可避免的现实。现实有时候真得很无奈,梦想,有时候总需要低头。

但是,低头不是彻底的屈服。在新闻和广告对版面的争夺中,我从来不以为会有彻底的新闻专业主义,也反对彻底的新闻广告化。就像宗教里说的,当恶不存在时,善也就消失了。永远是一个“度”的问题,也就是我们中国人伟大的哲学:中庸。

广告对于新闻的侵蚀,某种意义上讲,就是”传媒经济学“所涉及到的部分。这个世界没有任何一种商业象传媒那样是三方模式的(媒体、受众、广告主)。媒体打包出售受众,就势必会受到广告主(不仅是商业,还有政府)的步步进逼。这是一个从神权、君权过渡到金权的社会,漠视这个现实而一味鼓吹新闻专业主义,我认为是乌托邦式的,也是于事无补的。

我感觉到的solution是:学传媒的人掌控媒体。默多克购并华尔街日报遭来嘘声一片的原因就是:他是一个Businessman,不是一个Journalist。只有学过新闻专业主义的人,潜意识里才会有对传媒的良知。

学传媒的人,除了立志去做记者编辑,或者搞传播研究,还有一个很重要也很当仁不让的路径是:去做媒体的老板。只有真正掌握一个媒体,才有可能在新闻和广告中取得一个平衡。指望商人们良心发现,无异于与虎谋皮。

就有人说了,学传媒的人去做老板?可能性不大罢。是的,我也知道可能性比较小。但如果学传媒的人不学点经济学,那可能性就小了,那才是自动的缴械投降,那才是对新闻专业主义的事实背叛。

绿色和平中国项目与传讯总监卢思骋在“联大”的演讲最新故事 » Che, Dong's shared items in Google Reader
主席先生好!谢谢您给我这样一个机会,能够向您、以及来自世界各国的首脑致辞。

我作为公民社会的一员,并代表气候行动网络在此发言。我来自绿色和平中国。中国正处在气候变化问题争论的中心。最近的一项研究称,中国已经成为世界上最大的二氧化碳排放国。这一研究结果引发这样的论调:应对气候变化,中国首先要行动起来。
04:47 不用尺子将A4纸均等3折的方法 » MT
itmedia那里看到,一张普通印刷用的A4号白纸(297mm×210mm)可以利用对折,很简单的折叠成2均等,4均等分等等,但是折叠成3均等的简单方法知道么。

在日本,商业上的信件等都是均等3折叠后放到信封里的(为什么必须要这样我也不知道,出于礼貌?)。但是对没有向2折叠那样的基准的3折叠,是需要动一下脑子的。

 按照下面图示的方法,你就可以简单的实现均等3折叠了。


准备好两张纸。这里为了能够简单的区分清楚,用了不同颜色的两张纸。


向上图这样相互垂直,一个角对齐,


将白色纸的多余部分折叠一次,


就成这个样子了。这个时候,蓝色的纸就可以不用了,去掉它。


再把剩余的部分对折一下,


你就完成了。




很简单吧。不妨自己试试。


^==Back Home: www.chedong.com

^==Back Digest Home: www.chedong.com/digest/

<== 2007-09-29
  十月 2007  
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        
==> 2007-10-01