Matlab中why函数(一个无用但有趣的函数)
本文没有干货,纯属划水摸鱼。请大家切勿学习
当你运行自己编写的Matlab程序的时候,可能会遇到各种各样奇葩的问题。这时候如果你一脸蒙圈而又无奈地在命令行窗口中敲出一个why,运行,会如何呢?
很可能是这样
>> why
The bald and not excessively bald and not excessively smart hamster obeyed a terrified and not excessively terrified hamster.
翻译成中文就是:“这只秃而又不是过于秃而又不是过于聪明的仓鼠,听从了一个惊恐的而又不是过于惊恐的仓鼠。”
再运行一次,输出可能会变成:“为了愚弄这个又高又好又聪明的系统工程师。“
>> why
To fool the tall good and smart system manager.
再运行一次,输出又变成:”The rich rich and tall and good system manager suggested it.“
为了搞清楚Matlab的工程师们究竟在搞什么恶作剧,我翻出来这个函数的源代码看一下。
下面是Matlab自带的函数代码why.m的前几行内容:
function why(n)
%WHY Provides succinct answers to almost any question.
% WHY, by itself, provides a random answer.
% WHY(N) provides the N-th answer.
% Please embellish or modify this function to suit your own tastes.% Copyright 1984-2014 The MathWorks, Inc.if nargin > 0dflt = rng(n,'v5uniform');
end
switch randi(10)case 1a = special_case;case {2, 3, 4}a = phrase;otherwisea = sentence;
end
a(1) = upper(a(1));
disp(a);
if nargin > 0rng(dflt);
end
可见,如果运行why函数,就会用rand(i)生成随机数,进而随机生成答案。如果带一个参数n, 就会以这个参数做随机数种子,生成答案(这样一个n会对应唯一的答案)。
输出的答案有三种类型:special_case(特定短语),phrase(短语),sentence(句子)。下面分别进行分析。
一、special_case又是一个函数,该函数从12个特定的句子中随机选择一个
function a = special_case
switch randi(12)case 1a = 'why not?';case 2a = 'don''t ask!';case 3a = 'it''s your karma.';case 4a = 'stupid question!';case 5a = 'how should I know?';case 6a = 'can you rephrase that?';case 7a = 'it should be obvious.';case 8a = 'the devil made me do it.';case 9a = 'the computer did it.';case 10a = 'the customer is always right.';case 11a = 'in the beginning, God created the heavens and the earth...';case 12a = 'don''t you have something better to do?';
end
二、phrase是又一个函数,从3个类型中随机选择一种
function a = phrase
switch randi(3)case 1a = ['for the ' nouned_verb ' ' prepositional_phrase '.'];case 2a = ['to ' present_verb ' ' object '.'];case 3a = ['because ' sentence];
end
即:
1. for the+名词化动词+介词短语
2 to+现在时态动词+宾语
3 because+句子
(由于英文不太好懂,下面不再粘贴源代码,直接展示中文翻译。)
三、sentence则由”主语+谓语“构成。
--------------------------------------------------------------------------------------------------
语句中的各个部分,每个部分选用的单词都是用randi()随机选择的,列举如下:
主语
- 专有名词
- 主格代词
- 冠词+名词短语
谓语:
- 及物动词+宾语
- 不及物动词。
宾语:
- 宾格代词
- 介词+名词短语。
名词短语:
- 名词
- 形容词短语+名词短语
- 形容词短语+名词
形容词短语:
- 形容词
- 形容词短语+and+形容词短语
- 副词+形容词短语
介词短语
- 介词+冠词+名词短语
- 介词+专有名词
- 介词+宾格代词
专有名词:12个人名。
名词:6个:数学家,程序员,系统管理员,工程师,仓鼠,小孩
主格代词:5个:你,我,他,她,他们
宾格代词:4个,我,他,她,所有(all)
名词化动词:2个,爱,赞成
副词:很,不是很,不过分(not excessively)
形容词:7个:高,秃,年轻,聪明,富,惊恐,好
冠词:the, some, a
介词:of,from
现代时态动词:愚弄,取悦,满足
及物动词:10个:威胁,告诉,询问,帮助,遵守。
不及物动词:6个,坚持这么做,建议这么做,告诉我这么做,想要这么做,知道这是个好主意,想用这种方式做。
当然,像我一样划水摸鱼的朋友可以自行修改代码。比如,randi()生成的是伪随机数,这样如果每次启动matlab后第一次运行why(而不运行其他函数),输出的结果是固定的。所以你可以修改随机数种子,当why无参数时设置rng('shuffle'),也就是根据当前时间初始化生成器。你还可以修改输出各种内容的概率,或者将输出变成你喜欢的中文语句。
Matlab中why函数(一个无用但有趣的函数)相关推荐
- matlab如何输出一个函数的图像,在matlab中如何输出一个函数的图像
点击查看在matlab中如何输出一个函数的图像具体信息 答:A. imread imread函数用于读入各种图像文件,其一般的用法为 [X,MAP]=imread('filename','fmt')其 ...
- 【数字图像处理】模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现‘nearest’和‘bilinear’两种方法
作业要求:模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现'nearest'和'bilinear'两种方法. 首先理论方面主要参考了一下两个网址 https:/ ...
- 如何在MATLAB中调用(运行)“用Python写成的函数或脚本”
如何在MATLAB中调用"用Python写成的函数或脚本",首先要确保MATLAB知道咱们的Python解释器的位置在哪里. 如果安装了Python的时候把Python加入了系统环 ...
- matlab 第一类修正贝塞尔函数,零阶贝塞尔函数 在MATLAB中怎样画出零阶修正贝塞尔函数...
第二类修正贝塞尔函数的零阶和一阶,分别怎样用mat回忆终究只是回忆,它只代表一段过去,一段历史,回忆再美也只是曾经,告别过去,期待未来. 书上说 (0和1都是下标) K0(z), the zeroth ...
- pandas使用groupby.last函数获取每个组中的最后一个值实战:groupby.last函数获取每个组中的最后一个值、groupby.nth函数获取每个组中的最后一个值
pandas使用groupby.last函数获取每个组中的最后一个值实战:groupby.last函数获取每个组中的最后一个值.groupby.nth函数获取每个组中的最后一个值 目录
- [Matlab] Matlab中rand,randn,rands和randi函数使用
工业过程数据建模QQ群: 516473179 (欢迎交流) rand(m,n) 生成m行n列均匀分布在(0~1)之间的伪随机数 randn (m,n) 生成m行n列标准正态分布的伪随机数(均值为0,方 ...
- matlab中for循环设置二维数组,MATLAB中定义赋值一个二维数组
MATLAB中定义赋值一个二维数组 答: 分号:; 因特网能提供的最基本服务 答:E-mail, WWW, FTP 劳动合同中,用人单位给予劳动者低于当地工资最低水平的违反了()合法原则 答:内容合法 ...
- matlab给0数组赋值,MATLAB中怎么把一个函数的一部分赋值给一个变量或数组,比如怎么把sin(x)大于0的部分赋值给f....
答:你可以编一个for循环么,判断sin(x)时候大于0,如果大于0 f=sin(x) 答:总体思路:设定筛选条件,将数组中符合条件的元素筛选出来(可以筛选出元素值也可以筛选出元素对应的下标),然后将 ...
- MATLAB中曲线拟合方法总结(包括对数正态分布函数)
鉴于最近遇到非线性函数拟合问题,本人对网上有关matlab多种类型的线性.非线性曲线拟合的方法进行了总结,希望对各位朋友有所帮助. 1. Matlab有一个功能强大的曲线拟合工具箱 cftool ,使 ...
最新文章
- Facebook面部识别新突破:可识别未标记照片中用户
- Java并发工具类(闭锁CountDownLatch)
- 在python中使用grpc和protobuf
- 快速理解网络通信协议
- 机器学习算法优缺点对比及选择
- 【项目合作】基于Kinect人体模型重建与三围测量
- 如何把proe的工作目录怎么设置在服务器上的唯一方法
- mysql+基本代码_PHP+MySQL扎实基本功十句话_php
- 透视形变及其校准的方法
- netbeans-xdebug
- php如何判断日期是否是周末(星期六和星期天)
- 2款QQ空间相册批量下载原图工具(2020年12月有效)
- Insyde uefi 隐藏设置_UEFI+GPT安装Windows10
- CNI插件之bridge plugin
- Pycharm---修改背景颜色和背景图片
- 4个方法判断食物的热量高低
- java mc和java jdk_JDK、JRE、JVM三者间的关系
- VS Code 报Windows找不到文件‘chrome‘. 请确定文件名是否正确后,再试一次。八种解决办法
- 什么东西可以改善睡眠,可以试试这些助眠好物改善睡眠
- 娱美德举办WEMIX空投活动以庆祝《传奇M》在全球发布!
热门文章
- 网络连接失败?提示获取不到服务器的IP地址?教你这么改哈
- Linux下pthread_once()函数
- 计算机网络划分的依据是,1-2、计算机网络的分类
- string类的大小
- mysql数据库latin1转utf8_mysql数据库latin1转utf8
- 随机数产生函数(数据库)
- csdn的自动保存功能是摆设吗?我从下午2点写到现在的博客,最后点了下撤销,全给我删光了,你不能保存能不能别显示这个fw功能???????
- 怎么将图片转换成文字?分享几种简单好用的转换方法
- 游戏中的数学之角与弧度、三角函数
- 基于51单片机PH值测量液晶lcd1602显示报警设计