给定一组n字频对:
[ (w0, f0), (w1, f1), ..., (wn-1, fn-1) ]
在哪里是一个单词,是整数频率,以及频率的总和,wifi∑fi = m
我想使用伪随机数生成器(pRNG)来选择p单词,以便选择任何单词的概率与其频率成正比:wj0, wj1, ..., wjp-1
P(wi = wjk) = P(i = jk) = fi / m
(注意,这是替换选择,因此每次都可以选择相同的单词).
到目前为止,我已经提出了三种算法:
创建一个大小数组m,并填充它以便第一个条目,下一个条目,等等,所以最后的条目是.f0w0f1w …
所以给出以下java类:
class Outer
{
private int x;
public Outer(int x) { this.x = x; }
public class Inner
{
private int y;
public Inner(int y) { this.y = y; }
public int sum() { return x + y; }
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式从Java创建内部类的实例:
Outer o = new Outer(1);
Outer.Inner i = o.new Inner(2);
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法从JRuby那样做
#!/usr/bin/env jruby
require 'java'
java_import 'Outer'
o = Outer.new(1);
i = o.Inner.new(2); #=> NoMethodError: undefined method `Inner' for #<Outer...>
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
我开始阅读关于CRDT的这篇论文,这是一种通过确保修改数据的操作是可交换的,同时共享可修改数据的方法.在我看来,这将是Haskell中抽象的一个很好的候选者 - 为CRDT提供一个类型类,指定数据类型和在该类型上通信的操作,然后使库实际上在并发进程之间共享更新.
我无法想象的是如何表达操作必须在类型类规范中通勤的合同.
举个简单的例子:
class Direction a where
turnLeft :: a -> a
turnRight :: a -> a
Run Code Online (Sandbox Code Playgroud)
不能保证和它turnLeft . turnRight一样turnRight . turnLeft.我认为后备是指定monad定律的等价物 - 使用注释来指定类型系统不强制执行的约束.
我有一堆CSV数据需要加载到MySQL数据库中.好吧,也许是CSV-ish.(编辑:实际上,它看起来像RFC 4180中描述的东西)
每行都是以逗号分隔的双引号字符串列表.要转义出现在列值中的任何双引号,请使用双引号.允许反斜杠代表自己.
例如,行:
"", "\wave\", ""hello,"" said the vicar", "what are ""scare-quotes"" good for?", "I'm reading ""Bossypants"""
Run Code Online (Sandbox Code Playgroud)
如果解析成JSON应该是:
[ "", "\\wave\\", "\"hello,\" said the vicar", "what are \"scare-quotes\" good for?", "I'm reading \"Bossypants\"" ]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用它LOAD DATA来读取CSV,但我遇到了一些奇怪的行为.
举个例子,考虑一下我是否有一个简单的两列表
shell% mysql exampledb -e "describe person"
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| ID | int(11) | YES | | NULL | |
| UID | char(255) …Run Code Online (Sandbox Code Playgroud) 源树happy中包含AttrGrammarParser.ly与Parser.ly和源树alex包含Scan.x.然而,据我所知,为了编译happy,我们需要使用... 将.ly文件转换为.lhs文件happy,并且为了编译,alex我们需要使用... 将.x文件转换为.hs文件alex.
因此,为了编译任一工具,似乎必须进行一些自举.
Setup.lhs每个项目的文件都包含一些模板扩展,但据我所知,不要做任何特别的事情来进行自举.
引导如何以及在哪里完成?
所以我最近发现我可以<>...</>在Firefox中使用javascript中的标签,这在定义HTML或CSS块时很方便.
GM_addStyle(<><![CDATA[
.page { display: block }
/* ... */
td { vertical-align: top }
]]></>);
//...
div.innerHTML = <><![CDATA[
<table class="section">
<!-- ... -->
</table>
]]></>;
Run Code Online (Sandbox Code Playgroud)
但我不确定发生了什么,我喜欢理解我正在使用的语法.到底是什么<>...</>回报?我注意到当我将内容包含在内时逃逸效果更好<![CDATA[...]]>,那么那里发生了什么?这只是Firefox还是跨浏览器?
我尝试在线查看,但遇到了正常的谷歌/符号问题.此外,谷歌CDATA JavaScript的大多数结果似乎并不相关.
给定一个FILE*或一个文件描述符,是否有一种标准的方法来告诉你有多少字节可以读取?
我不能使用,s=ftell(f),fseek(f,0,SEEK_END),e=ftell(f),fseek(f,s,SEEK_SET),e-s因为FILE*它只包装了我得到的文件描述符pipe(2),ESPIPE当我尝试时,我得到了.
我正在考虑使用select(2)零超时来告诉我至少有一个字节准备好被读取,然后一次读取一个字节,直到select(2)告诉我停止.这看起来有点笨拙而且很慢.
有一个更好的方法吗?
所以今晚我正在考虑一个图形距离算法,并在我开车时想到了这个:
module GraphDistance where
import Data.Map
distance :: (Ord a) => a -> Map a [a] -> Map a Int
distance a m = m'
where m' = mapWithKey d m
d a' as = if a == a' then 0 else 1 + minimum (Prelude.map (m'!) as)
Run Code Online (Sandbox Code Playgroud)
起初,我为自己感到骄傲,因为它看起来很优雅.但后来我意识到它不起作用 - 核心运行可能会陷入循环中.
我不得不编码来说服自己:
ghci> distance 1 $ fromList [(0,[1]),(1,[0,2]),(2,[1,3]),(3,[2])]
fromList [(0,1),(1,0),(2,^CInterrupted.
Run Code Online (Sandbox Code Playgroud)
但现在我觉得我已经考虑过了.
在处理我可以阅读的核心数据时是否有常见错误和反模式的列表,所以我可以训练我的大脑进行核心思考?经验训练我很好地思考非核心数据,但如果可以的话,我想从别人的错误中吸取教训.
我试着查看Int -> [a] -> Maybe ahoogle,但没有运气.
我觉得这应该在某个标准库中,但我不知道在哪里.
我有一个简单的MySQL表:
% mysql -u rampion dev -e 'describe person'
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | UNI | NULL | auto_increment |
| uid | varchar(256) | NO | PRI | NULL | |
+-------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
我想运行一个简单的DataMapper脚本:
# temp.rb
require 'rubygems'
require 'datamapper'
DataMapper::Logger.new($stdout, :debug)
DataMapper.setup(:default, "mysql://rampion@localhost/dev")
class Person
include DataMapper::Resource
property :id, Serial
property :uid, String
end
DataMapper.finalize
p Person.first_or_create(:uid => 'Steve')
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我得到动态链接器错误:
% ruby …Run Code Online (Sandbox Code Playgroud)