有时生活需要一点随机性。
无论是否是从袋子里抓取弹珠,从一副牌中抽一张牌,还是其他完全不同的事物,这个库都会为您添加一个简单而强大的功能,即随机行为。
DWRandom 是一个轻量级框架,用 Objective-C 编写,使得在许多 Foundation 核心对象中进行随机化变得容易。接口基于扩展,旨在使用简单,学习轻松。如果想要在项目中为随机化添加简洁的一行代码,请使用 DWRandom。
为什么使用这个库而不是编写自己的随机化实用工具方法?虽然您可以这样做,但这里有几个原因可能促使您在项目中使用 DWRandom。
您可以使用 git 克隆仓库
git clone https://github.com/dmwesterhoff/DWRandom.git
然后将文件添加到您的项目中,并使用本地导入头文件
#import "DWRandom.h"
为了使其易于记忆,DWRandom 库中的所有方法前面都加有“random”一词。例如,从数组中选择随机元素。
id randomObject = [array randomObject];
或获取随机 UIColor...
UIColor *randomColor = [UIColor randomColor];
容易记住吧?以下是所有可用方法的完整列表,有关更多示例的复制粘贴片段,请查看示例
- (id)randomObject;
+ (NSArray*)randomShuffle:(NSArray*)array;
- (id)randomObject;
- (void)randomShuffle;
+ (NSMutableArray*)randomShuffle:(NSMutableArray*)array;
- (id)randomKey;
- (id)randomValue;
- (id)randomKey;
- (id)randomValue;
- (id)randomObject;
- (id)randomObject;
- (id)randomObject;
- (id)randomObject;
+ (NSData*)randomDataOfLength:(NSUInteger)length;
+ (BOOL)randomBool;
+ (unsigned int)randomInteger;
+ (unsigned int)randomIntegerWithMax:(unsigned int)max;
+ (unsigned int)randomIntegerWithMin:(unsigned int)min
max:(unsigned int)max;
+ (NSNumber*)randomNumber;
+ (NSNumber*)randomNumberWithMax:(unsigned int)max;
+ (NSNumber*)randomNumberWithMin:(unsigned int)min
max:(unsigned int)max;
- (NSString*)randomCharacter;
+ (NSString*)randomStringOfLength:(NSUInteger)length;
+ (NSString*)randomStringOfLength:(NSUInteger)length
option:(DWRandomStringOption)option;
+ (NSString*)randomStringOfLength:(NSUInteger)length
characterSet:(NSString*)characterSet;
+ (NSString*)randomShuffle:(NSString*)string;
- (void)randomShuffle;
- (NSString*)randomCharacter;
+ (UIColor*)randomColor;
+ (UIColor*)randomColorWithAlpha:(CGFloat)alpha;
+ (UIColor*)randomColorWithRandomAlpha;
即将推出...
您可以在这里查看完整的参考文档。
该库的底层是 arc4random()
函数,更具体地说,是 arc4random_uniform()
,因为它避免了像 arc4random() % n
这样的模运算偏差。arc4random 方法与其他“等效”方法相比,范围也显著更好。
arc4random 手册页说明
The arc4random() function uses the key stream generator employed by the
arc4 cipher, which uses 8*8 8 bit S-Boxes. The S-Boxes can be in about
(2**1700) states. The arc4random() function returns pseudo-random numbers
in the range of 0 to (2**32)-1, and therefore has twice the range of
rand(3) and random(3).
一些关于模运算偏差的信息来自手册页
arc4random_uniform() will return a uniformly distributed random number
less than upper_bound. arc4random_uniform() is recommended over construc-
tions like ``arc4random() % upper_bound'' as it avoids "modulo bias" when
the upper bound is not a power of two.
使用 arc4random 函数族的好处之一是,其中没有函数需要明确地初始化,因为它在幕后自动完成。
有个好主意并想贡献力量?以下是您如何帮助...
git checkout -b my-new-feature
git commit -am 'Add some feature'
git push origin my-new-feature
v0.1.0 - 初始项目发布 (3/6/16)
适合想自己挖掘的人的好读物。
David Westerhoff - [email protected]
The MIT License (MIT)
版权所有 (c) 2016 David M. Westerhoff
特此授权,免费提供给任何人,无论获得本软件及相关的文档文件(“软件”),均可不经限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、转让、出售软件复制品,并允许获取该软件的人按照以下条件进行...
上述版权声明和本许可声明应包含在软件的所有副本或主要内容中。
软件按“现状”提供,不提供任何形式的保证,无论是明确的还是隐含的,包括但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,作者或版权持有者不对任何索赔、损害或其他责任承担责任,无论这些责任是由于合同、侵权或其他原因引起的,这些责任是从、因为或与软件的使用或任何其他方式联系在一起的。