无法将ActionScript3转换为c#

时间:2011-06-28 16:46:51

标签: c# arrays actionscript-3

你好我试图在c#中实现排序功能(我想对数组进行排序)

card_codes.sort(function() { return 2 * Math.floor(Math.random()) ? -1 : 1 } );

ActionScript对脚本中的整数数组进行排序,每次首次排序后都以301开头

但是当我尝试在c#中对相同的数组进行排序时,它始终以101

开头

这是我如何在c#

中对它进行排序
Array.Sort(PlayngCardCodes, (f1, f2) => 0.CompareTo(2 * (int)Math.Floor(rng.NextDouble()) == 0 ? -1 : 1));

任何人都可以告诉我如何完全重写actionscript排序以获得相同的结果吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

ActionScript代码已损坏

Math.random()// will result in a number from 0 to 1 like so
//0.40654489677399397

当您放置任何数字时,它会将其向下舍入。 例如

0.40654489677399397 floored-->0
用其他词语

trace(Math.floor(0.40654489677399397) )// output is 0

总结一下

trace( Math.floor( Math.random() ) )// output is always 0


trace( 2 * Math.floor(Math.random()) ? -1 : 1 ) // output is always 1

我不知道c#但我认为你需要在尝试转换之前修复你的来源 但是,由于ActionScript输出始终为1只是让你的c#函数总是返回1并完成它:)
[编辑]
我跑了一个测试,输出很奇怪。虽然,它不是原始数组可能是由于在AS3中进行的排序类型

var card_codes:Array = new Array(2,467,8,342,37,7,6789,34,234,2)
card_codes.sort(function() { return 2 * Math.floor(Math.random()) ? -1 : 1 } );
trace(card_codes)// output is always 7,2,6789,8,34,37,234,2,342,467